decocms 4.161.2 → 4.162.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DkjWcZD-.js → AlertCircle-LCxBCJ8n.js} +1 -1
- package/dist/client/assets/{AreaChart-BhkonnRg.js → AreaChart-CVlhdmdg.js} +1 -1
- package/dist/client/assets/{ArrowUp-DAA8boPY.js → ArrowUp-LFRKHLuQ.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-D8TPuRuJ.js → ArrowUpRight-CXMFqfGp.js} +1 -1
- package/dist/client/assets/{Check-De5xpJ0K.js → Check-BCFAcmIa.js} +1 -1
- package/dist/client/assets/{CheckCircle-DeJIdYYq.js → CheckCircle-DpOD9rH0.js} +1 -1
- package/dist/client/assets/{ChevronDown-grOM3xSX.js → ChevronDown-BOvaCVzg.js} +1 -1
- package/dist/client/assets/{ChevronRight-Cyogjxfm.js → ChevronRight-liTksB2U.js} +1 -1
- package/dist/client/assets/{ChevronUp-DIUedEx1.js → ChevronUp-BIqoKMUJ.js} +1 -1
- package/dist/client/assets/{Copy01-DEkTleE-.js → Copy01-ZIMiAxdP.js} +1 -1
- package/dist/client/assets/{CpuChip01-Dsk680MX.js → CpuChip01-ZsmfFXVO.js} +1 -1
- package/dist/client/assets/{DotsVertical-BaMvQPx5.js → DotsVertical-CtO9eku7.js} +1 -1
- package/dist/client/assets/{Eye-DdzBJpW0.js → Eye-BQWYf35S.js} +1 -1
- package/dist/client/assets/{FilterLines-1IFdHyBL.js → FilterLines-CaGojimS.js} +1 -1
- package/dist/client/assets/{HardDrive-CZF0RiCb.js → HardDrive-BRyCfhBH.js} +1 -1
- package/dist/client/assets/{Key01-qFWWm7I0.js → Key01-i8xg5eM3.js} +1 -1
- package/dist/client/assets/{LayoutLeft-D3dfvOJc.js → LayoutLeft-Co2_iLon.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BUH7ViZX.js → LinkExternal01-S8dAjzzi.js} +1 -1
- package/dist/client/assets/{LogOut01-GO407ARs.js → LogOut01-D75UBZCc.js} +1 -1
- package/dist/client/assets/{Monitor01-BBb-96JI.js → Monitor01-BAx1QWFz.js} +1 -1
- package/dist/client/assets/{Palette-G-qrN-IT.js → Palette-Bg3YC03V.js} +1 -1
- package/dist/client/assets/{Play-CkvF8PeT.js → Play-VIp82r5R.js} +1 -1
- package/dist/client/assets/{Plus-DolMQAo4.js → Plus-C9hAZmdY.js} +1 -1
- package/dist/client/assets/{SearchLg-CFQzg9fN.js → SearchLg-CqGEHAUM.js} +1 -1
- package/dist/client/assets/{SearchMd-DCX7P32_.js → SearchMd-oPsBet0y.js} +1 -1
- package/dist/client/assets/{Settings02-QFTejQVV.js → Settings02-DNMfHyCE.js} +1 -1
- package/dist/client/assets/{Shield01-BlitQe4N.js → Shield01-DD8XMdYI.js} +1 -1
- package/dist/client/assets/{Star01-D0qlrfqR.js → Star01-y2n-9wTn.js} +1 -1
- package/dist/client/assets/{Stars01-2TnupN6q.js → Stars01-CJ0QEEdc.js} +1 -1
- package/dist/client/assets/{Stars02-DbK2oBak.js → Stars02-B3TWh8au.js} +1 -1
- package/dist/client/assets/{Sun-DVajpqnC.js → Sun-BQEYQLhf.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DY4K5cqR.js → SwitchHorizontal01-Dsxsamxe.js} +1 -1
- package/dist/client/assets/{Tool01-CgtDQOgO.js → Tool01-Oew-Vovb.js} +1 -1
- package/dist/client/assets/{Tool02-MSwzSxke.js → Tool02-CJeM1QZT.js} +1 -1
- package/dist/client/assets/{Trash01-DSxLTY0P.js → Trash01-CLRqp8e5.js} +1 -1
- package/dist/client/assets/{TrendUp01-djHA1GEE.js → TrendUp01-Bm1SbHN0.js} +1 -1
- package/dist/client/assets/{Upload01-W82kShpH.js → Upload01-ZVOuhs4w.js} +1 -1
- package/dist/client/assets/{User01-CXTn_TP5.js → User01-BYLEai7_.js} +1 -1
- package/dist/client/assets/{Users01-DQVb_7oO.js → Users01-CS4W313X.js} +1 -1
- package/dist/client/assets/{Users03-DK2c0NaU.js → Users03-CbHaoSh0.js} +1 -1
- package/dist/client/assets/{X-DsGAzzV8.js → X-x99fWfG-.js} +1 -1
- package/dist/client/assets/{XCircle-DuADiFVm.js → XCircle-CeqmuHIK.js} +1 -1
- package/dist/client/assets/{XClose-BOYWq1vy.js → XClose-CCug5seG.js} +1 -1
- package/dist/client/assets/{Zap-Djw_FpdI.js → Zap-DHqCvvjt.js} +1 -1
- package/dist/client/assets/{ZapSquare-C3s49zNL.js → ZapSquare-BKWVL4uR.js} +1 -1
- package/dist/client/assets/{access-gate-BRcWAcEH.js → access-gate-C9PFWoZS.js} +1 -1
- package/dist/client/assets/{add-section-modal-DkaZh9cy.js → add-section-modal-DEjIe-XG.js} +1 -1
- package/dist/client/assets/{agent-icon-D0etPDkN.js → agent-icon-DR5LB4zY.js} +1 -1
- package/dist/client/assets/{agents-list-1nArnMzn.js → agents-list-BvXD__fr.js} +1 -1
- package/dist/client/assets/{ai-providers-XeksWCKW.js → ai-providers-DuMestUx.js} +1 -1
- package/dist/client/assets/{alert-I-_PUhRM.js → alert-DWAFMZWl.js} +1 -1
- package/dist/client/assets/{alert-dialog-B3JnEiZT.js → alert-dialog-DR9_FciR.js} +1 -1
- package/dist/client/assets/{app-editor-BbkYtqwi.js → app-editor-BC28cPFO.js} +1 -1
- package/dist/client/assets/{auth-BkcPrlSH.js → auth-BiMrtm96.js} +1 -1
- package/dist/client/assets/{auth-catchall-JZDu0xii.js → auth-catchall-BNPPREMt.js} +1 -1
- package/dist/client/assets/{auth-entry-D376ANc2.js → auth-entry-CVJjeL2L.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DULW70yu.js → auth-split-layout-CbPO57v5.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DZxhoF_0.js → authenticate-and-persist-oauth-B8SUVbil.js} +1 -1
- package/dist/client/assets/{automation-list-row-y5_hhf0p.js → automation-list-row-C5X09Iy0.js} +1 -1
- package/dist/client/assets/{automation-runs-DNqF8MQa.js → automation-runs-i1Rm2H_V.js} +1 -1
- package/dist/client/assets/{automations-BTGiuB5f.js → automations-C48IGjrC.js} +1 -1
- package/dist/client/assets/{avatar-ShBwmidu.js → avatar-CssB4IS0.js} +1 -1
- package/dist/client/assets/{badge-CLGDkcax.js → badge-B-S2iO6e.js} +1 -1
- package/dist/client/assets/{block-document-DKkHndgg.js → block-document-Dotg4_gG.js} +1 -1
- package/dist/client/assets/{brand-context-DidwD5g4.js → brand-context-C331P1EH.js} +1 -1
- package/dist/client/assets/{buckets-BXy6rRmD.js → buckets-zt_s5mti.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-Pp9TOqgP.js → bulk-category-panel-DMe3EujP.js} +1 -1
- package/dist/client/assets/{calendar-BcaXLcUe.js → calendar-BO4sgiAT.js} +1 -1
- package/dist/client/assets/{capability-load-error-CqdQPRYW.js → capability-load-error-B2CpoAHd.js} +1 -1
- package/dist/client/assets/{card-C98b87L-.js → card-Dtd81GX2.js} +1 -1
- package/dist/client/assets/{category-editor-BnVhTkaR.js → category-editor-BxdNiDrW.js} +1 -1
- package/dist/client/assets/{chat-context-DAYV5YFw.js → chat-context-_ugV5jB0.js} +1 -1
- package/dist/client/assets/{checkbox-hx3qwtU4.js → checkbox-DyL6jqNP.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CSA4lo7W.js → cli-auth-success-CBllfpZy.js} +1 -1
- package/dist/client/assets/{collection-detail-Dnt_8ShC.js → collection-detail-CJ-IT8lZ.js} +1 -1
- package/dist/client/assets/{collection-display-button-D7ZFqgmc.js → collection-display-button-rIB9x9ex.js} +1 -1
- package/dist/client/assets/{collection-search-BujcF3uz.js → collection-search-DDaBoxpd.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Dxzi1B76.js → collection-table-wrapper-DvDVvjdJ.js} +1 -1
- package/dist/client/assets/{collection-tabs-1Doa_k8q.js → collection-tabs-6ZZEGxA4.js} +1 -1
- package/dist/client/assets/{command-DTif1pCh.js → command-B0sPw5D_.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-CkLAXxz7.js → commerce-onboarding-CA2gNg1f.js} +1 -1
- package/dist/client/assets/{companions-core-DyTSbEDy.js → companions-core-bB24Ott2.js} +1 -1
- package/dist/client/assets/{connect-BQJsmY0Z.js → connect-dTZGddot.js} +1 -1
- package/dist/client/assets/{connection-DT5hjP5L.js → connection-B2NXk64E.js} +1 -1
- package/dist/client/assets/{connection-card-BEnBoaJQ.js → connection-card-D4yqc7qp.js} +1 -1
- package/dist/client/assets/{connection-detail-3HClPo6D.js → connection-detail-BNv09xz3.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-D1M4SXKF.js → connection-form-helpers-Dp2JRmtQ.js} +1 -1
- package/dist/client/assets/{connections-ok4_lFFO.js → connections-Dkp0iGo0.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-Z3wBsgik.js → decopilot-sse-pool-tfgrlddF.js} +1 -1
- package/dist/client/assets/{dialog-B1XOtEFa.js → dialog-DDV9hxrK.js} +1 -1
- package/dist/client/assets/{domain-settings-BX-8JSGW.js → domain-settings-Cj5IWEJw.js} +1 -1
- package/dist/client/assets/{drawer-Bindqbrh.js → drawer-CLLhxT0A.js} +1 -1
- package/dist/client/assets/{dropdown-menu-B2utwqdh.js → dropdown-menu-DFyP7pd-.js} +1 -1
- package/dist/client/assets/{empty-state-ClLU6296.js → empty-state-C8MJdBfO.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DSg0AjMi.js → extract-connection-data-GzPEHPIn.js} +1 -1
- package/dist/client/assets/{file-explorer-5gFVDcag.js → file-explorer-DcVPQshc.js} +1 -1
- package/dist/client/assets/{form-ujVSU6EU.js → form-dL4WOA5T.js} +1 -1
- package/dist/client/assets/{general-BgWx-5sJ.js → general-6LKGbmPX.js} +1 -1
- package/dist/client/assets/{github-repo-picker-CuyTuY6S.js → github-repo-picker-BYme-j8T.js} +1 -1
- package/dist/client/assets/{hooks-BSzBu2tD.js → hooks-B9cPFqGD.js} +1 -1
- package/dist/client/assets/{index-Cx7SoZn_.js → index-60s5nmmz.js} +1 -1
- package/dist/client/assets/{index-DLYm4Sa-.js → index-BBd4FRXS.js} +1 -1
- package/dist/client/assets/{index-BwQT5Hhi.js → index-By7P3hhU.js} +1 -1
- package/dist/client/assets/{index-Bhxc2Isb.js → index-D2YLDCkn.js} +1 -1
- package/dist/client/assets/{index-B6q32zYz.js → index-DeVgWfhn.js} +1 -1
- package/dist/client/assets/{index-CBD4gVZR.js → index-Y9ucfh4p.js} +1 -1
- package/dist/client/assets/{index-DvtCTmmx.js → index-ZADPN4om.js} +3 -3
- package/dist/client/assets/{index-DyrZQfe8.js → index-jG87093U.js} +1 -1
- package/dist/client/assets/{index-WEdfBcak.js → index-kfiIPtrP.js} +3 -3
- package/dist/client/assets/{index-PxBIb6oF.js → index-pBoO89BO.js} +1 -1
- package/dist/client/assets/{index-redirect-CzO62sP0.js → index-redirect-CfBCt2ky.js} +1 -1
- package/dist/client/assets/{index-DJEeCuky.js → index-u1ajTG-j.js} +5 -5
- package/dist/client/assets/{input-psV6HQEl.js → input-BjlpMnRZ.js} +1 -1
- package/dist/client/assets/{integration-icon-DjHXNUPP.js → integration-icon-CI602PfH.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CB5VBjiU.js → invite-member-dialog-phqD0XUF.js} +1 -1
- package/dist/client/assets/{label-6xyucx-s.js → label-CSNgMmTA.js} +1 -1
- package/dist/client/assets/{layout-CBOg45xC.js → layout-BBpcfaXL.js} +1 -1
- package/dist/client/assets/{login-Cxn9KXio.js → login-DE_463fT.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CKixkOtS.js → mcp-oauth-CxvR2V5h.js} +1 -1
- package/dist/client/assets/{members-CL8x8Krr.js → members-CeatJR1m.js} +1 -1
- package/dist/client/assets/{monaco-editor-DJpDPKHP.js → monaco-editor-zuz4s4Wv.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DPROMALt.js → monitoring-stats-row-krDWXB2t.js} +1 -1
- package/dist/client/assets/{multi-select-Bh_v-l_m.js → multi-select-CMyA49eR.js} +1 -1
- package/dist/client/assets/{oauth-callback-DutuJ6V_.js → oauth-callback-C9jDdjjs.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-C4S55pOq.js → oauth-callback-ai-provider-CY3QZi7E.js} +1 -1
- package/dist/client/assets/{onboarding-DuerzaiT.js → onboarding-C3hOUjMo.js} +1 -1
- package/dist/client/assets/{org-layout-of8A1jAC.js → org-layout-XwuOFG3d.js} +1 -1
- package/dist/client/assets/{organization-choice-B3rPtstm.js → organization-choice-BM-XKanD.js} +1 -1
- package/dist/client/assets/{orgs-3twuRrYh.js → orgs-DmL2XQRI.js} +1 -1
- package/dist/client/assets/{page-seo-form-BY3nYdel.js → page-seo-form-0xV6qNbu.js} +1 -1
- package/dist/client/assets/{popover-BGrrSZ8M.js → popover-EE72qx8A.js} +1 -1
- package/dist/client/assets/{post-editor-C4XyjEMt.js → post-editor-BuHJ7HnN.js} +1 -1
- package/dist/client/assets/{primitives-CbLkj1JF.js → primitives-ChQICk_y.js} +1 -1
- package/dist/client/assets/{profile-QV2jNue9.js → profile-B0SoUvj9.js} +1 -1
- package/dist/client/assets/project-app-view-YTx3iCq1.js +1 -0
- package/dist/client/assets/record-editor-M7bvrOuK.js +1 -0
- package/dist/client/assets/{redirect-editor-s6PMTrlX.js → redirect-editor-_6dVoePs.js} +1 -1
- package/dist/client/assets/registry-fNrz9Fbw.js +2 -0
- package/dist/client/assets/{registry-layout-DO-5mJZI.js → registry-layout-OS_nbWHC.js} +1 -1
- package/dist/client/assets/{reports-CwFf2f6b.js → reports-B3VBQs5Y.js} +1 -1
- package/dist/client/assets/{require-capability-BeOopecx.js → require-capability-CieeBdjs.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BFWyMRf5.js → required-auth-layout-BDIyJAhL.js} +1 -1
- package/dist/client/assets/{reset-password-C_-lQlSH.js → reset-password-CpG0cI8F.js} +1 -1
- package/dist/client/assets/{roles-D_oBaje3.js → roles-DlOhY5JD.js} +1 -1
- package/dist/client/assets/{search-input-Bfg6VxQW.js → search-input-cF6ciAVZ.js} +1 -1
- package/dist/client/assets/{secrets-k2GFZysm.js → secrets-Dh26lP0l.js} +1 -1
- package/dist/client/assets/{sections-editor-BujDptuZ.js → sections-editor-HbcASmu4.js} +1 -1
- package/dist/client/assets/{select-CWMyLghp.js → select-ceaThfRJ.js} +1 -1
- package/dist/client/assets/{select-model-CXvd3jI3.js → select-model-CDLnPEtQ.js} +1 -1
- package/dist/client/assets/{self-tool-result-BpCEaqPw.js → self-tool-result-CaPtQwDV.js} +1 -1
- package/dist/client/assets/{seo-editor-Cxh8JRxE.js → seo-editor-CoW5u7nN.js} +1 -1
- package/dist/client/assets/{settings-layout-D-wc3B9V.js → settings-layout-CM35yCas.js} +1 -1
- package/dist/client/assets/{settings-section-Z9R6HthO.js → settings-section-BJKYi71q.js} +1 -1
- package/dist/client/assets/{shell-controls-DJv-74jc.js → shell-controls-BLKKFd-i.js} +1 -1
- package/dist/client/assets/{shell-layout-C7_zhx2J.js → shell-layout-Cem8gTbL.js} +1 -1
- package/dist/client/assets/{sidebar-CGksZnes.js → sidebar-4JG4Ky1v.js} +1 -1
- package/dist/client/assets/{skeleton-BpfjGmFh.js → skeleton-QaXxQA1G.js} +1 -1
- package/dist/client/assets/{spinner-D0HY4fdO.js → spinner-CyUVcOie.js} +1 -1
- package/dist/client/assets/{sso-Bz5k2CGO.js → sso-CCHd62CO.js} +1 -1
- package/dist/client/assets/{store-DT_Iylxw.js → store-lf3dlAB1.js} +1 -1
- package/dist/client/assets/store-registry-BTA3Me55.js +2 -0
- package/dist/client/assets/{studio-tools-ChooDZCt.js → studio-tools-CUWFqlTh.js} +1 -1
- package/dist/client/assets/{switch-BmoPsk_L.js → switch-1Vfz3uSg.js} +1 -1
- package/dist/client/assets/{tab-id-DpWn0fbM.js → tab-id-CI2T4n3l.js} +1 -1
- package/dist/client/assets/{table-BluVU23Z.js → table-BQAbKOYa.js} +1 -1
- package/dist/client/assets/{tabs-C9Dri0XB.js → tabs-qagPrFeg.js} +1 -1
- package/dist/client/assets/{textarea-CMhJIDqb.js → textarea-C3WLqu3y.js} +1 -1
- package/dist/client/assets/{toggle-group-BK4yx2ic.js → toggle-group-NXghphbz.js} +1 -1
- package/dist/client/assets/{toolbar-CJN41Q0U.js → toolbar-ZE2CENTf.js} +1 -1
- package/dist/client/assets/{tooltip-DCC06XNr.js → tooltip-CiyZj9MW.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CTGRuhSY.js → use-ai-providers-B6AoVltc.js} +1 -1
- package/dist/client/assets/{use-automations-CTEnO1Zu.js → use-automations-CiQS3Pmq.js} +1 -1
- package/dist/client/assets/{use-autosave-CgHGIUlv.js → use-autosave-DE9X8qzD.js} +1 -1
- package/dist/client/assets/{use-capability-BTlnzwER.js → use-capability-DX60Hp0S.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Dg1-zfZ4.js → use-clock-tick-Q8CgV2VU.js} +1 -1
- package/dist/client/assets/{use-connection-BTIHIL2U.js → use-connection-c87Xz8U-.js} +1 -1
- package/dist/client/assets/{use-copy-Bkx7pWID.js → use-copy-BPhBM3Oi.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-ClJmipur.js → use-create-virtual-mcp-BnZL3DPb.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Dp_dA5sI.js → use-debounced-autosave-BmT6bwNL.js} +1 -1
- package/dist/client/assets/{use-debounced-value-Dx_Znjq0.js → use-debounced-value-DViZw7k7.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CnnQh7bH.js → use-deco-credits-DJJXk8t9.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-B84Jbaf1.js → use-decopilot-events-DuMl-BWe.js} +1 -1
- package/dist/client/assets/{use-delete-connection-Dd7d9SGg.js → use-delete-connection--jtVGLkv.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CElXlSvL.js → use-deployment-admin-Cr_7c4Yl.js} +1 -1
- package/dist/client/assets/{use-file-configs-DUlhqIgH.js → use-file-configs-CwjnQywn.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CRM4xUSx.js → use-infinite-scroll-8IyahDR0.js} +1 -1
- package/dist/client/assets/{use-join-requests-B0JwpKM9.js → use-join-requests-tHCwhSs3.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DH8oUnNS.js → use-mcp-auth-status-sjpR15R6.js} +1 -1
- package/dist/client/assets/{use-mcp-client-C78T1evw.js → use-mcp-client-BmnPrlCp.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-qcP_UOWU.js → use-mcp-tools-B9U_ZOEs.js} +1 -1
- package/dist/client/assets/{use-members-5U5mLxdD.js → use-members-BglXgqfG.js} +1 -1
- package/dist/client/assets/{use-mobile-BufL0gpx.js → use-mobile-ZF_jSfPp.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-bcvHJsmR.js → use-navigate-to-agent-DIeI8ULY.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-B93vTKrZ.js → use-org-auth-client-C-GSCd--.js} +1 -1
- package/dist/client/assets/{use-org-sso-BpALHDeh.js → use-org-sso-BawqtY1O.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CHjz2_ga.js → use-organization-roles-BfAcHhLm.js} +1 -1
- package/dist/client/assets/{use-organization-settings-rcLpLxq6.js → use-organization-settings-DcixnwK-.js} +1 -1
- package/dist/client/assets/{use-registry-connections-XjUGFr5z.js → use-registry-connections-VIMCCdEN.js} +1 -1
- package/dist/client/assets/{use-secrets-DVGBRr0e.js → use-secrets-DN6xkhJI.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CNPY1kJ-.js → use-status-sounds-CVssdpKX.js} +1 -1
- package/dist/client/assets/{use-tags-d-ihZKch.js → use-tags-OVuXWbIz.js} +1 -1
- package/dist/client/assets/{use-view-mode-CxLEvfyI.js → use-view-mode-BdkdIEp5.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-tTUO8PD5.js → use-virtual-mcp-BIQdKSoy.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-QTu-xaep.js +1 -0
- package/dist/client/assets/{useQueries-CX-pbcRo.js → useQueries-D2CKhSr2.js} +1 -1
- package/dist/client/assets/{useRouterState-DM9ViZSm.js → useRouterState-B0tRZSRp.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-_f32It26.js +1 -0
- package/dist/client/assets/{users-hps1B13C.js → users-Xgmv3XAu.js} +1 -1
- package/dist/client/assets/{variant-calendar--g4p8stV.js → variant-calendar-CHbHmJQD.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Cn3ICdtv.js → view-mode-toggle-DTYJdfuz.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +766 -766
- package/dist/server/server.js +576 -576
- package/package.json +2 -4
- package/dist/client/assets/project-app-view-CZZgc1s8.js +0 -1
- package/dist/client/assets/record-editor-Bk_Re_fD.js +0 -1
- package/dist/client/assets/registry-BTKEcIS_.js +0 -2
- package/dist/client/assets/store-registry-DwAm5lvb.js +0 -2
- package/dist/client/assets/useInfiniteQuery-C1ye6sqf.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CiYM_Dv6.js +0 -1
- package/dist/server/node_modules/@resvg/resvg-js/LICENSE +0 -373
- package/dist/server/node_modules/@resvg/resvg-js/README.md +0 -314
- package/dist/server/node_modules/@resvg/resvg-js/index.js +0 -23
- package/dist/server/node_modules/@resvg/resvg-js/js-binding.js +0 -1
- package/dist/server/node_modules/@resvg/resvg-js/package.json +0 -152
- package/dist/server/node_modules/@shuding/opentype.js/LICENSE +0 -20
- package/dist/server/node_modules/@shuding/opentype.js/README.md +0 -9
- package/dist/server/node_modules/@shuding/opentype.js/RELEASES.md +0 -272
- package/dist/server/node_modules/@shuding/opentype.js/bin/ot +0 -84
- package/dist/server/node_modules/@shuding/opentype.js/bin/server.js +0 -64
- package/dist/server/node_modules/@shuding/opentype.js/bin/test-render +0 -96
- package/dist/server/node_modules/@shuding/opentype.js/dist/opentype.js +0 -11655
- package/dist/server/node_modules/@shuding/opentype.js/dist/opentype.min.js +0 -2
- package/dist/server/node_modules/@shuding/opentype.js/dist/opentype.module.js +0 -11639
- package/dist/server/node_modules/@shuding/opentype.js/package.json +0 -73
- package/dist/server/node_modules/@shuding/opentype.js/src/bbox.js +0 -158
- package/dist/server/node_modules/@shuding/opentype.js/src/bidi.js +0 -243
- package/dist/server/node_modules/@shuding/opentype.js/src/char.js +0 -43
- package/dist/server/node_modules/@shuding/opentype.js/src/check.js +0 -16
- package/dist/server/node_modules/@shuding/opentype.js/src/encoding.js +0 -1032
- package/dist/server/node_modules/@shuding/opentype.js/src/features/applySubstitution.js +0 -74
- package/dist/server/node_modules/@shuding/opentype.js/src/features/arab/arabicPresentationForms.js +0 -83
- package/dist/server/node_modules/@shuding/opentype.js/src/features/arab/arabicRequiredLigatures.js +0 -41
- package/dist/server/node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicSentence.js +0 -43
- package/dist/server/node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicWord.js +0 -31
- package/dist/server/node_modules/@shuding/opentype.js/src/features/featureQuery.js +0 -483
- package/dist/server/node_modules/@shuding/opentype.js/src/features/latn/contextCheck/latinWord.js +0 -31
- package/dist/server/node_modules/@shuding/opentype.js/src/features/latn/latinLigatures.js +0 -40
- package/dist/server/node_modules/@shuding/opentype.js/src/font.js +0 -433
- package/dist/server/node_modules/@shuding/opentype.js/src/glyph.js +0 -274
- package/dist/server/node_modules/@shuding/opentype.js/src/glyphset.js +0 -150
- package/dist/server/node_modules/@shuding/opentype.js/src/hintingtt.js +0 -3062
- package/dist/server/node_modules/@shuding/opentype.js/src/index.js +0 -5
- package/dist/server/node_modules/@shuding/opentype.js/src/layout.js +0 -357
- package/dist/server/node_modules/@shuding/opentype.js/src/opentype.js +0 -375
- package/dist/server/node_modules/@shuding/opentype.js/src/parse.js +0 -628
- package/dist/server/node_modules/@shuding/opentype.js/src/path.js +0 -212
- package/dist/server/node_modules/@shuding/opentype.js/src/position.js +0 -77
- package/dist/server/node_modules/@shuding/opentype.js/src/substitution.js +0 -447
- package/dist/server/node_modules/@shuding/opentype.js/src/table.js +0 -215
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/cff.js +0 -1156
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/cmap.js +0 -145
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/fvar.js +0 -71
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/gdef.js +0 -62
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/glyf.js +0 -349
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/gpos.js +0 -146
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/gsub.js +0 -251
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/head.js +0 -35
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/hhea.js +0 -27
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/hmtx.js +0 -51
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/kern.js +0 -69
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/loca.js +0 -31
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/ltag.js +0 -33
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/maxp.js +0 -32
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/meta.js +0 -30
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/name.js +0 -680
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/os2.js +0 -65
- package/dist/server/node_modules/@shuding/opentype.js/src/tables/post.js +0 -41
- package/dist/server/node_modules/@shuding/opentype.js/src/tokenizer.js +0 -522
- package/dist/server/node_modules/@shuding/opentype.js/src/types.js +0 -976
- package/dist/server/node_modules/@shuding/opentype.js/src/util.js +0 -17
- package/dist/server/node_modules/base64-js/.travis.yml +0 -5
- package/dist/server/node_modules/base64-js/LICENSE.MIT +0 -21
- package/dist/server/node_modules/base64-js/README.md +0 -31
- package/dist/server/node_modules/base64-js/bench/bench.js +0 -19
- package/dist/server/node_modules/base64-js/lib/b64.js +0 -124
- package/dist/server/node_modules/base64-js/package.json +0 -34
- package/dist/server/node_modules/base64-js/test/convert.js +0 -51
- package/dist/server/node_modules/base64-js/test/url-safe.js +0 -18
- package/dist/server/node_modules/camelize/.eslintrc +0 -24
- package/dist/server/node_modules/camelize/.github/FUNDING.yml +0 -12
- package/dist/server/node_modules/camelize/CHANGELOG.md +0 -64
- package/dist/server/node_modules/camelize/LICENSE +0 -18
- package/dist/server/node_modules/camelize/README.md +0 -81
- package/dist/server/node_modules/camelize/example/camel.js +0 -12
- package/dist/server/node_modules/camelize/index.js +0 -61
- package/dist/server/node_modules/camelize/package.json +0 -84
- package/dist/server/node_modules/camelize/test/camel.js +0 -48
- package/dist/server/node_modules/color-name/LICENSE +0 -8
- package/dist/server/node_modules/color-name/README.md +0 -11
- package/dist/server/node_modules/color-name/index.js +0 -152
- package/dist/server/node_modules/color-name/package.json +0 -28
- package/dist/server/node_modules/css-background-parser/LICENSE +0 -22
- package/dist/server/node_modules/css-background-parser/README.md +0 -149
- package/dist/server/node_modules/css-background-parser/index.js +0 -162
- package/dist/server/node_modules/css-background-parser/package.json +0 -19
- package/dist/server/node_modules/css-box-shadow/README.md +0 -27
- package/dist/server/node_modules/css-box-shadow/index.js +0 -64
- package/dist/server/node_modules/css-box-shadow/package.json +0 -14
- package/dist/server/node_modules/css-box-shadow/test.js +0 -204
- package/dist/server/node_modules/css-color-keywords/LICENSE +0 -15
- package/dist/server/node_modules/css-color-keywords/README.md +0 -47
- package/dist/server/node_modules/css-color-keywords/colors.json +0 -148
- package/dist/server/node_modules/css-color-keywords/index.js +0 -3
- package/dist/server/node_modules/css-color-keywords/package.json +0 -27
- package/dist/server/node_modules/css-gradient-parser/LICENSE +0 -21
- package/dist/server/node_modules/css-gradient-parser/README.md +0 -75
- package/dist/server/node_modules/css-gradient-parser/dist/index.cjs +0 -2
- package/dist/server/node_modules/css-gradient-parser/dist/index.js +0 -2
- package/dist/server/node_modules/css-gradient-parser/package.json +0 -54
- package/dist/server/node_modules/css-to-react-native/LICENSE.md +0 -21
- package/dist/server/node_modules/css-to-react-native/README.md +0 -115
- package/dist/server/node_modules/css-to-react-native/index.js +0 -886
- package/dist/server/node_modules/css-to-react-native/package.json +0 -65
- package/dist/server/node_modules/css-to-react-native/src/TokenStream.js +0 -74
- package/dist/server/node_modules/css-to-react-native/src/__tests__/aspectRatio.js +0 -23
- package/dist/server/node_modules/css-to-react-native/src/__tests__/border.js +0 -85
- package/dist/server/node_modules/css-to-react-native/src/__tests__/borderColor.js +0 -37
- package/dist/server/node_modules/css-to-react-native/src/__tests__/boxModel.js +0 -136
- package/dist/server/node_modules/css-to-react-native/src/__tests__/boxShadow.js +0 -83
- package/dist/server/node_modules/css-to-react-native/src/__tests__/colors.js +0 -31
- package/dist/server/node_modules/css-to-react-native/src/__tests__/flex.js +0 -122
- package/dist/server/node_modules/css-to-react-native/src/__tests__/flexFlow.js +0 -22
- package/dist/server/node_modules/css-to-react-native/src/__tests__/font.js +0 -117
- package/dist/server/node_modules/css-to-react-native/src/__tests__/fontFamily.js +0 -43
- package/dist/server/node_modules/css-to-react-native/src/__tests__/fontVariant.js +0 -15
- package/dist/server/node_modules/css-to-react-native/src/__tests__/fontWeight.js +0 -8
- package/dist/server/node_modules/css-to-react-native/src/__tests__/index.js +0 -204
- package/dist/server/node_modules/css-to-react-native/src/__tests__/placeContent.js +0 -19
- package/dist/server/node_modules/css-to-react-native/src/__tests__/shadowOffsets.js +0 -13
- package/dist/server/node_modules/css-to-react-native/src/__tests__/textDecoration.js +0 -103
- package/dist/server/node_modules/css-to-react-native/src/__tests__/textDecorationLine.js +0 -23
- package/dist/server/node_modules/css-to-react-native/src/__tests__/textShadow.js +0 -30
- package/dist/server/node_modules/css-to-react-native/src/__tests__/transform.js +0 -55
- package/dist/server/node_modules/css-to-react-native/src/__tests__/units.js +0 -132
- package/dist/server/node_modules/css-to-react-native/src/devPropertiesWithoutUnitsRegExp.js +0 -19
- package/dist/server/node_modules/css-to-react-native/src/index.js +0 -90
- package/dist/server/node_modules/css-to-react-native/src/tokenTypes.js +0 -75
- package/dist/server/node_modules/css-to-react-native/src/transforms/aspectRatio.js +0 -12
- package/dist/server/node_modules/css-to-react-native/src/transforms/border.js +0 -53
- package/dist/server/node_modules/css-to-react-native/src/transforms/boxShadow.js +0 -11
- package/dist/server/node_modules/css-to-react-native/src/transforms/flex.js +0 -65
- package/dist/server/node_modules/css-to-react-native/src/transforms/flexFlow.js +0 -37
- package/dist/server/node_modules/css-to-react-native/src/transforms/font.js +0 -63
- package/dist/server/node_modules/css-to-react-native/src/transforms/fontFamily.js +0 -20
- package/dist/server/node_modules/css-to-react-native/src/transforms/fontVariant.js +0 -14
- package/dist/server/node_modules/css-to-react-native/src/transforms/index.js +0 -77
- package/dist/server/node_modules/css-to-react-native/src/transforms/placeContent.js +0 -24
- package/dist/server/node_modules/css-to-react-native/src/transforms/textDecoration.js +0 -53
- package/dist/server/node_modules/css-to-react-native/src/transforms/textDecorationLine.js +0 -18
- package/dist/server/node_modules/css-to-react-native/src/transforms/textShadow.js +0 -10
- package/dist/server/node_modules/css-to-react-native/src/transforms/transform.js +0 -74
- package/dist/server/node_modules/css-to-react-native/src/transforms/util.js +0 -99
- package/dist/server/node_modules/hex-rgb/index.js +0 -47
- package/dist/server/node_modules/hex-rgb/license +0 -9
- package/dist/server/node_modules/hex-rgb/package.json +0 -39
- package/dist/server/node_modules/hex-rgb/readme.md +0 -86
- package/dist/server/node_modules/linebreak/LICENSE +0 -21
- package/dist/server/node_modules/linebreak/dist/main.cjs +0 -1369
- package/dist/server/node_modules/linebreak/dist/module.mjs +0 -1368
- package/dist/server/node_modules/linebreak/package.json +0 -57
- package/dist/server/node_modules/linebreak/readme.md +0 -62
- package/dist/server/node_modules/parse-css-color/CHANGELOG.md +0 -54
- package/dist/server/node_modules/parse-css-color/LICENSE +0 -21
- package/dist/server/node_modules/parse-css-color/README.md +0 -110
- package/dist/server/node_modules/parse-css-color/dist/index.cjs.js +0 -171
- package/dist/server/node_modules/parse-css-color/dist/index.esm.js +0 -167
- package/dist/server/node_modules/parse-css-color/dist/index.umd.js +0 -7
- package/dist/server/node_modules/parse-css-color/package.json +0 -55
- package/dist/server/node_modules/postcss-value-parser/LICENSE +0 -22
- package/dist/server/node_modules/postcss-value-parser/README.md +0 -263
- package/dist/server/node_modules/postcss-value-parser/lib/index.js +0 -28
- package/dist/server/node_modules/postcss-value-parser/lib/parse.js +0 -321
- package/dist/server/node_modules/postcss-value-parser/lib/stringify.js +0 -48
- package/dist/server/node_modules/postcss-value-parser/lib/unit.js +0 -120
- package/dist/server/node_modules/postcss-value-parser/lib/walk.js +0 -22
- package/dist/server/node_modules/postcss-value-parser/package.json +0 -58
- package/dist/server/node_modules/satori/LICENSE +0 -373
- package/dist/server/node_modules/satori/README.md +0 -516
- package/dist/server/node_modules/satori/dist/index.cjs +0 -8
- package/dist/server/node_modules/satori/dist/index.cjs.LEGAL.txt +0 -4
- package/dist/server/node_modules/satori/dist/index.js +0 -8
- package/dist/server/node_modules/satori/dist/index.js.LEGAL.txt +0 -4
- package/dist/server/node_modules/satori/dist/jsx/index.cjs +0 -2
- package/dist/server/node_modules/satori/dist/jsx/index.cjs.LEGAL.txt +0 -0
- package/dist/server/node_modules/satori/dist/jsx/index.js +0 -2
- package/dist/server/node_modules/satori/dist/jsx/index.js.LEGAL.txt +0 -0
- package/dist/server/node_modules/satori/dist/jsx/jsx-runtime.cjs +0 -2
- package/dist/server/node_modules/satori/dist/jsx/jsx-runtime.cjs.LEGAL.txt +0 -0
- package/dist/server/node_modules/satori/dist/jsx/jsx-runtime.js +0 -2
- package/dist/server/node_modules/satori/dist/jsx/jsx-runtime.js.LEGAL.txt +0 -0
- package/dist/server/node_modules/satori/dist/standalone.cjs +0 -8
- package/dist/server/node_modules/satori/dist/standalone.cjs.LEGAL.txt +0 -4
- package/dist/server/node_modules/satori/dist/standalone.js +0 -8
- package/dist/server/node_modules/satori/dist/standalone.js.LEGAL.txt +0 -4
- package/dist/server/node_modules/satori/package.json +0 -149
- package/dist/server/node_modules/satori/yoga.wasm +0 -0
- package/dist/server/node_modules/tiny-inflate/LICENSE +0 -21
- package/dist/server/node_modules/tiny-inflate/index.js +0 -375
- package/dist/server/node_modules/tiny-inflate/package.json +0 -28
- package/dist/server/node_modules/tiny-inflate/readme.md +0 -31
- package/dist/server/node_modules/tiny-inflate/test/index.js +0 -75
- package/dist/server/node_modules/tiny-inflate/test/lorem.txt +0 -199
- package/dist/server/node_modules/unicode-trie/LICENSE +0 -8
- package/dist/server/node_modules/unicode-trie/README.md +0 -77
- package/dist/server/node_modules/unicode-trie/builder.js +0 -966
- package/dist/server/node_modules/unicode-trie/index.js +0 -136
- package/dist/server/node_modules/unicode-trie/package.json +0 -27
- package/dist/server/node_modules/unicode-trie/swap.js +0 -25
- package/dist/server/node_modules/unicode-trie/test/mocha.opts +0 -1
- package/dist/server/node_modules/unicode-trie/test/test.js +0 -243
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
// The Font object
|
|
2
|
-
|
|
3
|
-
import Path from './path';
|
|
4
|
-
import { DefaultEncoding } from './encoding';
|
|
5
|
-
import glyphset from './glyphset';
|
|
6
|
-
import Position from './position';
|
|
7
|
-
import Substitution from './substitution';
|
|
8
|
-
import { checkArgument } from './util';
|
|
9
|
-
import HintingTrueType from './hintingtt';
|
|
10
|
-
import Bidi from './bidi';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @typedef FontOptions
|
|
14
|
-
* @type Object
|
|
15
|
-
* @property {Boolean} empty - whether to create a new empty font
|
|
16
|
-
* @property {string} familyName
|
|
17
|
-
* @property {string} styleName
|
|
18
|
-
* @property {string=} fullName
|
|
19
|
-
* @property {string=} postScriptName
|
|
20
|
-
* @property {string=} designer
|
|
21
|
-
* @property {string=} designerURL
|
|
22
|
-
* @property {string=} manufacturer
|
|
23
|
-
* @property {string=} manufacturerURL
|
|
24
|
-
* @property {string=} license
|
|
25
|
-
* @property {string=} licenseURL
|
|
26
|
-
* @property {string=} version
|
|
27
|
-
* @property {string=} description
|
|
28
|
-
* @property {string=} copyright
|
|
29
|
-
* @property {string=} trademark
|
|
30
|
-
* @property {Number} unitsPerEm
|
|
31
|
-
* @property {Number} ascender
|
|
32
|
-
* @property {Number} descender
|
|
33
|
-
* @property {Number} createdTimestamp
|
|
34
|
-
* @property {string=} weightClass
|
|
35
|
-
* @property {string=} widthClass
|
|
36
|
-
* @property {string=} fsSelection
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* A Font represents a loaded OpenType font file.
|
|
41
|
-
* It contains a set of glyphs and methods to draw text on a drawing context,
|
|
42
|
-
* or to get a path representing the text.
|
|
43
|
-
* @exports opentype.Font
|
|
44
|
-
* @class
|
|
45
|
-
* @param {FontOptions}
|
|
46
|
-
* @constructor
|
|
47
|
-
*/
|
|
48
|
-
function Font(options) {
|
|
49
|
-
options = options || {};
|
|
50
|
-
options.tables = options.tables || {};
|
|
51
|
-
|
|
52
|
-
if (!options.empty) {
|
|
53
|
-
// Check that we've provided the minimum set of names.
|
|
54
|
-
checkArgument(
|
|
55
|
-
options.familyName,
|
|
56
|
-
'When creating a new Font object, familyName is required.'
|
|
57
|
-
);
|
|
58
|
-
checkArgument(
|
|
59
|
-
options.styleName,
|
|
60
|
-
'When creating a new Font object, styleName is required.'
|
|
61
|
-
);
|
|
62
|
-
checkArgument(
|
|
63
|
-
options.unitsPerEm,
|
|
64
|
-
'When creating a new Font object, unitsPerEm is required.'
|
|
65
|
-
);
|
|
66
|
-
checkArgument(
|
|
67
|
-
options.ascender,
|
|
68
|
-
'When creating a new Font object, ascender is required.'
|
|
69
|
-
);
|
|
70
|
-
checkArgument(
|
|
71
|
-
options.descender <= 0,
|
|
72
|
-
'When creating a new Font object, negative descender value is required.'
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
this.unitsPerEm = options.unitsPerEm || 1000;
|
|
76
|
-
this.ascender = options.ascender;
|
|
77
|
-
this.descender = options.descender;
|
|
78
|
-
this.createdTimestamp = options.createdTimestamp;
|
|
79
|
-
this.tables = Object.assign(options.tables, {
|
|
80
|
-
os2: Object.assign(
|
|
81
|
-
{
|
|
82
|
-
usWeightClass:
|
|
83
|
-
options.weightClass || this.usWeightClasses.MEDIUM,
|
|
84
|
-
usWidthClass:
|
|
85
|
-
options.widthClass || this.usWidthClasses.MEDIUM,
|
|
86
|
-
fsSelection:
|
|
87
|
-
options.fsSelection || this.fsSelectionValues.REGULAR,
|
|
88
|
-
},
|
|
89
|
-
options.tables.os2
|
|
90
|
-
),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
this.supported = true; // Deprecated: parseBuffer will throw an error if font is not supported.
|
|
95
|
-
this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []);
|
|
96
|
-
this.encoding = new DefaultEncoding(this);
|
|
97
|
-
this.position = new Position(this);
|
|
98
|
-
this.substitution = new Substitution(this);
|
|
99
|
-
this.tables = this.tables || {};
|
|
100
|
-
|
|
101
|
-
// needed for low memory mode only.
|
|
102
|
-
this._push = null;
|
|
103
|
-
this._hmtxTableData = {};
|
|
104
|
-
|
|
105
|
-
Object.defineProperty(this, 'hinting', {
|
|
106
|
-
get: function () {
|
|
107
|
-
if (this._hinting) return this._hinting;
|
|
108
|
-
if (this.outlinesFormat === 'truetype') {
|
|
109
|
-
return (this._hinting = new HintingTrueType(this));
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Check if the font has a glyph for the given character.
|
|
117
|
-
* @param {string}
|
|
118
|
-
* @return {Boolean}
|
|
119
|
-
*/
|
|
120
|
-
Font.prototype.hasChar = function (c) {
|
|
121
|
-
return this.encoding.charToGlyphIndex(c) !== null;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Convert the given character to a single glyph index.
|
|
126
|
-
* Note that this function assumes that there is a one-to-one mapping between
|
|
127
|
-
* the given character and a glyph; for complex scripts this might not be the case.
|
|
128
|
-
* @param {string}
|
|
129
|
-
* @return {Number}
|
|
130
|
-
*/
|
|
131
|
-
Font.prototype.charToGlyphIndex = function (s) {
|
|
132
|
-
return this.encoding.charToGlyphIndex(s);
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Convert the given character to a single Glyph object.
|
|
137
|
-
* Note that this function assumes that there is a one-to-one mapping between
|
|
138
|
-
* the given character and a glyph; for complex scripts this might not be the case.
|
|
139
|
-
* @param {string}
|
|
140
|
-
* @return {opentype.Glyph}
|
|
141
|
-
*/
|
|
142
|
-
Font.prototype.charToGlyph = function (c) {
|
|
143
|
-
const glyphIndex = this.charToGlyphIndex(c);
|
|
144
|
-
let glyph = this.glyphs.get(glyphIndex);
|
|
145
|
-
if (!glyph) {
|
|
146
|
-
// .notdef
|
|
147
|
-
glyph = this.glyphs.get(0);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
return glyph;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Update features
|
|
155
|
-
* @param {any} options features options
|
|
156
|
-
*/
|
|
157
|
-
Font.prototype.updateFeatures = function (options) {
|
|
158
|
-
// TODO: update all features options not only 'latn'.
|
|
159
|
-
return this.defaultRenderOptions.features.map((feature) => {
|
|
160
|
-
if (feature.script === 'latn') {
|
|
161
|
-
return {
|
|
162
|
-
script: 'latn',
|
|
163
|
-
tags: feature.tags.filter((tag) => options[tag]),
|
|
164
|
-
};
|
|
165
|
-
} else {
|
|
166
|
-
return feature;
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Convert the given text to a list of Glyph objects.
|
|
173
|
-
* Note that there is no strict one-to-one mapping between characters and
|
|
174
|
-
* glyphs, so the list of returned glyphs can be larger or smaller than the
|
|
175
|
-
* length of the given string.
|
|
176
|
-
* @param {string}
|
|
177
|
-
* @param {GlyphRenderOptions} [options]
|
|
178
|
-
* @return {opentype.Glyph[]}
|
|
179
|
-
*/
|
|
180
|
-
Font.prototype.stringToGlyphs = function (s, options) {
|
|
181
|
-
const bidi = new Bidi();
|
|
182
|
-
|
|
183
|
-
// Create and register 'glyphIndex' state modifier
|
|
184
|
-
const charToGlyphIndexMod = (token) => this.charToGlyphIndex(token.char);
|
|
185
|
-
bidi.registerModifier('glyphIndex', null, charToGlyphIndexMod);
|
|
186
|
-
|
|
187
|
-
// roll-back to default features
|
|
188
|
-
let features = options
|
|
189
|
-
? this.updateFeatures(options.features)
|
|
190
|
-
: this.defaultRenderOptions.features;
|
|
191
|
-
|
|
192
|
-
bidi.applyFeatures(this, features);
|
|
193
|
-
|
|
194
|
-
const indexes = bidi.getTextGlyphs(s);
|
|
195
|
-
|
|
196
|
-
let length = indexes.length;
|
|
197
|
-
|
|
198
|
-
// convert glyph indexes to glyph objects
|
|
199
|
-
const glyphs = new Array(length);
|
|
200
|
-
const notdef = this.glyphs.get(0);
|
|
201
|
-
for (let i = 0; i < length; i += 1) {
|
|
202
|
-
glyphs[i] = this.glyphs.get(indexes[i]) || notdef;
|
|
203
|
-
}
|
|
204
|
-
return glyphs;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Retrieve the value of the kerning pair between the left glyph (or its index)
|
|
209
|
-
* and the right glyph (or its index). If no kerning pair is found, return 0.
|
|
210
|
-
* The kerning value gets added to the advance width when calculating the spacing
|
|
211
|
-
* between glyphs.
|
|
212
|
-
* For GPOS kerning, this method uses the default script and language, which covers
|
|
213
|
-
* most use cases. To have greater control, use font.position.getKerningValue .
|
|
214
|
-
* @param {opentype.Glyph} leftGlyph
|
|
215
|
-
* @param {opentype.Glyph} rightGlyph
|
|
216
|
-
* @return {Number}
|
|
217
|
-
*/
|
|
218
|
-
Font.prototype.getKerningValue = function (leftGlyph, rightGlyph) {
|
|
219
|
-
leftGlyph = leftGlyph.index || leftGlyph;
|
|
220
|
-
rightGlyph = rightGlyph.index || rightGlyph;
|
|
221
|
-
const gposKerning = this.position.defaultKerningTables;
|
|
222
|
-
if (gposKerning) {
|
|
223
|
-
return this.position.getKerningValue(
|
|
224
|
-
gposKerning,
|
|
225
|
-
leftGlyph,
|
|
226
|
-
rightGlyph
|
|
227
|
-
);
|
|
228
|
-
}
|
|
229
|
-
// "kern" table
|
|
230
|
-
return this.kerningPairs[leftGlyph + ',' + rightGlyph] || 0;
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* @typedef GlyphRenderOptions
|
|
235
|
-
* @type Object
|
|
236
|
-
* @property {string} [script] - script used to determine which features to apply. By default, 'DFLT' or 'latn' is used.
|
|
237
|
-
* See https://www.microsoft.com/typography/otspec/scripttags.htm
|
|
238
|
-
* @property {string} [language='dflt'] - language system used to determine which features to apply.
|
|
239
|
-
* See https://www.microsoft.com/typography/developers/opentype/languagetags.aspx
|
|
240
|
-
* @property {boolean} [kerning=true] - whether to include kerning values
|
|
241
|
-
* @property {object} [features] - OpenType Layout feature tags. Used to enable or disable the features of the given script/language system.
|
|
242
|
-
* See https://www.microsoft.com/typography/otspec/featuretags.htm
|
|
243
|
-
*/
|
|
244
|
-
Font.prototype.defaultRenderOptions = {
|
|
245
|
-
kerning: true,
|
|
246
|
-
features: [
|
|
247
|
-
/**
|
|
248
|
-
* these 4 features are required to render Arabic text properly
|
|
249
|
-
* and shouldn't be turned off when rendering arabic text.
|
|
250
|
-
*/
|
|
251
|
-
{ script: 'arab', tags: ['init', 'medi', 'fina', 'rlig'] },
|
|
252
|
-
{ script: 'latn', tags: ['liga', 'rlig'] },
|
|
253
|
-
],
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Helper function that invokes the given callback for each glyph in the given text.
|
|
258
|
-
* The callback gets `(glyph, x, y, fontSize, options)`.* @param {string} text
|
|
259
|
-
* @param {string} text - The text to apply.
|
|
260
|
-
* @param {number} [x=0] - Horizontal position of the beginning of the text.
|
|
261
|
-
* @param {number} [y=0] - Vertical position of the *baseline* of the text.
|
|
262
|
-
* @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.
|
|
263
|
-
* @param {GlyphRenderOptions=} options
|
|
264
|
-
* @param {Function} callback
|
|
265
|
-
*/
|
|
266
|
-
Font.prototype.forEachGlyph = function (
|
|
267
|
-
text,
|
|
268
|
-
x,
|
|
269
|
-
y,
|
|
270
|
-
fontSize,
|
|
271
|
-
options,
|
|
272
|
-
callback
|
|
273
|
-
) {
|
|
274
|
-
x = x !== undefined ? x : 0;
|
|
275
|
-
y = y !== undefined ? y : 0;
|
|
276
|
-
fontSize = fontSize !== undefined ? fontSize : 72;
|
|
277
|
-
options = Object.assign({}, this.defaultRenderOptions, options);
|
|
278
|
-
const fontScale = (1 / this.unitsPerEm) * fontSize;
|
|
279
|
-
const glyphs = this.stringToGlyphs(text, options);
|
|
280
|
-
let kerningLookups;
|
|
281
|
-
if (options.kerning) {
|
|
282
|
-
const script = options.script || this.position.getDefaultScriptName();
|
|
283
|
-
kerningLookups = this.position.getKerningTables(
|
|
284
|
-
script,
|
|
285
|
-
options.language
|
|
286
|
-
);
|
|
287
|
-
}
|
|
288
|
-
for (let i = 0; i < glyphs.length; i += 1) {
|
|
289
|
-
const glyph = glyphs[i];
|
|
290
|
-
callback.call(this, glyph, x, y, fontSize, options);
|
|
291
|
-
if (glyph.advanceWidth) {
|
|
292
|
-
x += glyph.advanceWidth * fontScale;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
if (options.kerning && i < glyphs.length - 1) {
|
|
296
|
-
// We should apply position adjustment lookups in a more generic way.
|
|
297
|
-
// Here we only use the xAdvance value.
|
|
298
|
-
const kerningValue = kerningLookups
|
|
299
|
-
? this.position.getKerningValue(
|
|
300
|
-
kerningLookups,
|
|
301
|
-
glyph.index,
|
|
302
|
-
glyphs[i + 1].index
|
|
303
|
-
)
|
|
304
|
-
: this.getKerningValue(glyph, glyphs[i + 1]);
|
|
305
|
-
x += kerningValue * fontScale;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
if (options.letterSpacing) {
|
|
309
|
-
x += options.letterSpacing * fontSize;
|
|
310
|
-
} else if (options.tracking) {
|
|
311
|
-
x += (options.tracking / 1000) * fontSize;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return x;
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Create a Path object that represents the given text.
|
|
319
|
-
* @param {string} text - The text to create.
|
|
320
|
-
* @param {number} [x=0] - Horizontal position of the beginning of the text.
|
|
321
|
-
* @param {number} [y=0] - Vertical position of the *baseline* of the text.
|
|
322
|
-
* @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.
|
|
323
|
-
* @param {GlyphRenderOptions=} options
|
|
324
|
-
* @return {opentype.Path}
|
|
325
|
-
*/
|
|
326
|
-
Font.prototype.getPath = function (text, x, y, fontSize, options) {
|
|
327
|
-
const fullPath = new Path();
|
|
328
|
-
this.forEachGlyph(
|
|
329
|
-
text,
|
|
330
|
-
x,
|
|
331
|
-
y,
|
|
332
|
-
fontSize,
|
|
333
|
-
options,
|
|
334
|
-
function (glyph, gX, gY, gFontSize) {
|
|
335
|
-
const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);
|
|
336
|
-
fullPath.extend(glyphPath);
|
|
337
|
-
}
|
|
338
|
-
);
|
|
339
|
-
return fullPath;
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Create an array of Path objects that represent the glyphs of a given text.
|
|
344
|
-
* @param {string} text - The text to create.
|
|
345
|
-
* @param {number} [x=0] - Horizontal position of the beginning of the text.
|
|
346
|
-
* @param {number} [y=0] - Vertical position of the *baseline* of the text.
|
|
347
|
-
* @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.
|
|
348
|
-
* @param {GlyphRenderOptions=} options
|
|
349
|
-
* @return {opentype.Path[]}
|
|
350
|
-
*/
|
|
351
|
-
Font.prototype.getPaths = function (text, x, y, fontSize, options) {
|
|
352
|
-
const glyphPaths = [];
|
|
353
|
-
this.forEachGlyph(
|
|
354
|
-
text,
|
|
355
|
-
x,
|
|
356
|
-
y,
|
|
357
|
-
fontSize,
|
|
358
|
-
options,
|
|
359
|
-
function (glyph, gX, gY, gFontSize) {
|
|
360
|
-
const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);
|
|
361
|
-
glyphPaths.push(glyphPath);
|
|
362
|
-
}
|
|
363
|
-
);
|
|
364
|
-
|
|
365
|
-
return glyphPaths;
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Returns the advance width of a text.
|
|
370
|
-
*
|
|
371
|
-
* This is something different than Path.getBoundingBox() as for example a
|
|
372
|
-
* suffixed whitespace increases the advanceWidth but not the bounding box
|
|
373
|
-
* or an overhanging letter like a calligraphic 'f' might have a quite larger
|
|
374
|
-
* bounding box than its advance width.
|
|
375
|
-
*
|
|
376
|
-
* This corresponds to canvas2dContext.measureText(text).width
|
|
377
|
-
*
|
|
378
|
-
* @param {string} text - The text to create.
|
|
379
|
-
* @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.
|
|
380
|
-
* @param {GlyphRenderOptions=} options
|
|
381
|
-
* @return advance width
|
|
382
|
-
*/
|
|
383
|
-
Font.prototype.getAdvanceWidth = function (text, fontSize, options) {
|
|
384
|
-
return this.forEachGlyph(text, 0, 0, fontSize, options, function () {});
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
/**
|
|
388
|
-
* @private
|
|
389
|
-
*/
|
|
390
|
-
Font.prototype.fsSelectionValues = {
|
|
391
|
-
ITALIC: 0x001, //1
|
|
392
|
-
UNDERSCORE: 0x002, //2
|
|
393
|
-
NEGATIVE: 0x004, //4
|
|
394
|
-
OUTLINED: 0x008, //8
|
|
395
|
-
STRIKEOUT: 0x010, //16
|
|
396
|
-
BOLD: 0x020, //32
|
|
397
|
-
REGULAR: 0x040, //64
|
|
398
|
-
USER_TYPO_METRICS: 0x080, //128
|
|
399
|
-
WWS: 0x100, //256
|
|
400
|
-
OBLIQUE: 0x200, //512
|
|
401
|
-
};
|
|
402
|
-
|
|
403
|
-
/**
|
|
404
|
-
* @private
|
|
405
|
-
*/
|
|
406
|
-
Font.prototype.usWidthClasses = {
|
|
407
|
-
ULTRA_CONDENSED: 1,
|
|
408
|
-
EXTRA_CONDENSED: 2,
|
|
409
|
-
CONDENSED: 3,
|
|
410
|
-
SEMI_CONDENSED: 4,
|
|
411
|
-
MEDIUM: 5,
|
|
412
|
-
SEMI_EXPANDED: 6,
|
|
413
|
-
EXPANDED: 7,
|
|
414
|
-
EXTRA_EXPANDED: 8,
|
|
415
|
-
ULTRA_EXPANDED: 9,
|
|
416
|
-
};
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* @private
|
|
420
|
-
*/
|
|
421
|
-
Font.prototype.usWeightClasses = {
|
|
422
|
-
THIN: 100,
|
|
423
|
-
EXTRA_LIGHT: 200,
|
|
424
|
-
LIGHT: 300,
|
|
425
|
-
NORMAL: 400,
|
|
426
|
-
MEDIUM: 500,
|
|
427
|
-
SEMI_BOLD: 600,
|
|
428
|
-
BOLD: 700,
|
|
429
|
-
EXTRA_BOLD: 800,
|
|
430
|
-
BLACK: 900,
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
export default Font;
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
// The Glyph object
|
|
2
|
-
|
|
3
|
-
import check from './check';
|
|
4
|
-
import Path from './path';
|
|
5
|
-
// import glyf from './tables/glyf' Can't be imported here, because it's a circular dependency
|
|
6
|
-
|
|
7
|
-
function getPathDefinition(glyph, path) {
|
|
8
|
-
let _path = path || new Path();
|
|
9
|
-
return {
|
|
10
|
-
configurable: true,
|
|
11
|
-
|
|
12
|
-
get: function () {
|
|
13
|
-
if (typeof _path === 'function') {
|
|
14
|
-
_path = _path();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return _path;
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
set: function (p) {
|
|
21
|
-
_path = p;
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* @typedef GlyphOptions
|
|
27
|
-
* @type Object
|
|
28
|
-
* @property {string} [name] - The glyph name
|
|
29
|
-
* @property {number} [unicode]
|
|
30
|
-
* @property {Array} [unicodes]
|
|
31
|
-
* @property {number} [xMin]
|
|
32
|
-
* @property {number} [yMin]
|
|
33
|
-
* @property {number} [xMax]
|
|
34
|
-
* @property {number} [yMax]
|
|
35
|
-
* @property {number} [advanceWidth]
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
// A Glyph is an individual mark that often corresponds to a character.
|
|
39
|
-
// Some glyphs, such as ligatures, are a combination of many characters.
|
|
40
|
-
// Glyphs are the basic building blocks of a font.
|
|
41
|
-
//
|
|
42
|
-
// The `Glyph` class contains utility methods for drawing the path and its points.
|
|
43
|
-
/**
|
|
44
|
-
* @exports opentype.Glyph
|
|
45
|
-
* @class
|
|
46
|
-
* @param {GlyphOptions}
|
|
47
|
-
* @constructor
|
|
48
|
-
*/
|
|
49
|
-
function Glyph(options) {
|
|
50
|
-
// By putting all the code on a prototype function (which is only declared once)
|
|
51
|
-
// we reduce the memory requirements for larger fonts by some 2%
|
|
52
|
-
this.bindConstructorValues(options);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @param {GlyphOptions}
|
|
57
|
-
*/
|
|
58
|
-
Glyph.prototype.bindConstructorValues = function (options) {
|
|
59
|
-
this.index = options.index || 0;
|
|
60
|
-
|
|
61
|
-
// These three values cannot be deferred for memory optimization:
|
|
62
|
-
this.name = options.name || null;
|
|
63
|
-
this.unicode = options.unicode || undefined;
|
|
64
|
-
this.unicodes =
|
|
65
|
-
options.unicodes || options.unicode !== undefined
|
|
66
|
-
? [options.unicode]
|
|
67
|
-
: [];
|
|
68
|
-
|
|
69
|
-
// But by binding these values only when necessary, we reduce can
|
|
70
|
-
// the memory requirements by almost 3% for larger fonts.
|
|
71
|
-
if ('xMin' in options) {
|
|
72
|
-
this.xMin = options.xMin;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if ('yMin' in options) {
|
|
76
|
-
this.yMin = options.yMin;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if ('xMax' in options) {
|
|
80
|
-
this.xMax = options.xMax;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if ('yMax' in options) {
|
|
84
|
-
this.yMax = options.yMax;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if ('advanceWidth' in options) {
|
|
88
|
-
this.advanceWidth = options.advanceWidth;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// The path for a glyph is the most memory intensive, and is bound as a value
|
|
92
|
-
// with a getter/setter to ensure we actually do path parsing only once the
|
|
93
|
-
// path is actually needed by anything.
|
|
94
|
-
Object.defineProperty(this, 'path', getPathDefinition(this, options.path));
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* @param {number}
|
|
99
|
-
*/
|
|
100
|
-
Glyph.prototype.addUnicode = function (unicode) {
|
|
101
|
-
if (this.unicodes.length === 0) {
|
|
102
|
-
this.unicode = unicode;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
this.unicodes.push(unicode);
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
// /**
|
|
109
|
-
// * Calculate the minimum bounding box for this glyph.
|
|
110
|
-
// * @return {opentype.BoundingBox}
|
|
111
|
-
// */
|
|
112
|
-
// Glyph.prototype.getBoundingBox = function() {
|
|
113
|
-
// return this.path.getBoundingBox();
|
|
114
|
-
// };
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Convert the glyph to a Path we can draw on a drawing context.
|
|
118
|
-
* @param {number} [x=0] - Horizontal position of the beginning of the text.
|
|
119
|
-
* @param {number} [y=0] - Vertical position of the *baseline* of the text.
|
|
120
|
-
* @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.
|
|
121
|
-
* @param {Object=} options - xScale, yScale to stretch the glyph.
|
|
122
|
-
* @param {opentype.Font} if hinting is to be used, the font
|
|
123
|
-
* @return {opentype.Path}
|
|
124
|
-
*/
|
|
125
|
-
Glyph.prototype.getPath = function (x, y, fontSize, options, font) {
|
|
126
|
-
x = x !== undefined ? x : 0;
|
|
127
|
-
y = y !== undefined ? y : 0;
|
|
128
|
-
fontSize = fontSize !== undefined ? fontSize : 72;
|
|
129
|
-
let commands;
|
|
130
|
-
let hPoints;
|
|
131
|
-
if (!options) options = {};
|
|
132
|
-
let xScale = options.xScale;
|
|
133
|
-
let yScale = options.yScale;
|
|
134
|
-
|
|
135
|
-
if (options.hinting && font && font.hinting) {
|
|
136
|
-
// in case of hinting, the hinting engine takes care
|
|
137
|
-
// of scaling the points (not the path) before hinting.
|
|
138
|
-
hPoints = this.path && font.hinting.exec(this, fontSize);
|
|
139
|
-
// in case the hinting engine failed hPoints is undefined
|
|
140
|
-
// and thus reverts to plain rending
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (hPoints) {
|
|
144
|
-
// Call font.hinting.getCommands instead of `glyf.getPath(hPoints).commands` to avoid a circular dependency
|
|
145
|
-
commands = font.hinting.getCommands(hPoints);
|
|
146
|
-
x = Math.round(x);
|
|
147
|
-
y = Math.round(y);
|
|
148
|
-
// TODO in case of hinting xyScaling is not yet supported
|
|
149
|
-
xScale = yScale = 1;
|
|
150
|
-
} else {
|
|
151
|
-
commands = this.path.commands;
|
|
152
|
-
const scale = (1 / (this.path.unitsPerEm || 1000)) * fontSize;
|
|
153
|
-
if (xScale === undefined) xScale = scale;
|
|
154
|
-
if (yScale === undefined) yScale = scale;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const p = new Path();
|
|
158
|
-
for (let i = 0; i < commands.length; i += 1) {
|
|
159
|
-
const cmd = commands[i];
|
|
160
|
-
if (cmd.type === 'M') {
|
|
161
|
-
p.moveTo(x + cmd.x * xScale, y + -cmd.y * yScale);
|
|
162
|
-
} else if (cmd.type === 'L') {
|
|
163
|
-
p.lineTo(x + cmd.x * xScale, y + -cmd.y * yScale);
|
|
164
|
-
} else if (cmd.type === 'Q') {
|
|
165
|
-
p.quadraticCurveTo(
|
|
166
|
-
x + cmd.x1 * xScale,
|
|
167
|
-
y + -cmd.y1 * yScale,
|
|
168
|
-
x + cmd.x * xScale,
|
|
169
|
-
y + -cmd.y * yScale
|
|
170
|
-
);
|
|
171
|
-
} else if (cmd.type === 'C') {
|
|
172
|
-
p.curveTo(
|
|
173
|
-
x + cmd.x1 * xScale,
|
|
174
|
-
y + -cmd.y1 * yScale,
|
|
175
|
-
x + cmd.x2 * xScale,
|
|
176
|
-
y + -cmd.y2 * yScale,
|
|
177
|
-
x + cmd.x * xScale,
|
|
178
|
-
y + -cmd.y * yScale
|
|
179
|
-
);
|
|
180
|
-
} else if (cmd.type === 'Z') {
|
|
181
|
-
p.closePath();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return p;
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Split the glyph into contours.
|
|
190
|
-
* This function is here for backwards compatibility, and to
|
|
191
|
-
* provide raw access to the TrueType glyph outlines.
|
|
192
|
-
* @return {Array}
|
|
193
|
-
*/
|
|
194
|
-
Glyph.prototype.getContours = function () {
|
|
195
|
-
if (this.points === undefined) {
|
|
196
|
-
return [];
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const contours = [];
|
|
200
|
-
let currentContour = [];
|
|
201
|
-
for (let i = 0; i < this.points.length; i += 1) {
|
|
202
|
-
const pt = this.points[i];
|
|
203
|
-
currentContour.push(pt);
|
|
204
|
-
if (pt.lastPointOfContour) {
|
|
205
|
-
contours.push(currentContour);
|
|
206
|
-
currentContour = [];
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
check.argument(
|
|
211
|
-
currentContour.length === 0,
|
|
212
|
-
'There are still points left in the current contour.'
|
|
213
|
-
);
|
|
214
|
-
return contours;
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Calculate the xMin/yMin/xMax/yMax/lsb/rsb for a Glyph.
|
|
219
|
-
* @return {Object}
|
|
220
|
-
*/
|
|
221
|
-
Glyph.prototype.getMetrics = function () {
|
|
222
|
-
const commands = this.path.commands;
|
|
223
|
-
const xCoords = [];
|
|
224
|
-
const yCoords = [];
|
|
225
|
-
for (let i = 0; i < commands.length; i += 1) {
|
|
226
|
-
const cmd = commands[i];
|
|
227
|
-
if (cmd.type !== 'Z') {
|
|
228
|
-
xCoords.push(cmd.x);
|
|
229
|
-
yCoords.push(cmd.y);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (cmd.type === 'Q' || cmd.type === 'C') {
|
|
233
|
-
xCoords.push(cmd.x1);
|
|
234
|
-
yCoords.push(cmd.y1);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
if (cmd.type === 'C') {
|
|
238
|
-
xCoords.push(cmd.x2);
|
|
239
|
-
yCoords.push(cmd.y2);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
const metrics = {
|
|
244
|
-
xMin: Math.min.apply(null, xCoords),
|
|
245
|
-
yMin: Math.min.apply(null, yCoords),
|
|
246
|
-
xMax: Math.max.apply(null, xCoords),
|
|
247
|
-
yMax: Math.max.apply(null, yCoords),
|
|
248
|
-
leftSideBearing: this.leftSideBearing,
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
if (!isFinite(metrics.xMin)) {
|
|
252
|
-
metrics.xMin = 0;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (!isFinite(metrics.xMax)) {
|
|
256
|
-
metrics.xMax = this.advanceWidth;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (!isFinite(metrics.yMin)) {
|
|
260
|
-
metrics.yMin = 0;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if (!isFinite(metrics.yMax)) {
|
|
264
|
-
metrics.yMax = 0;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
metrics.rightSideBearing =
|
|
268
|
-
this.advanceWidth -
|
|
269
|
-
metrics.leftSideBearing -
|
|
270
|
-
(metrics.xMax - metrics.xMin);
|
|
271
|
-
return metrics;
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
export default Glyph;
|