diff --git a/CHANGELOG.md b/CHANGELOG.md index 28b8d69fc3..a4cf808bfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ ## Modifications since last major version +### 32.2.1 + +* Make certain characters slightly wider under Quasi-Proportional. Affected characters: + - CYRILLIC CAPITAL LETTER DJE (`U+0402`). + - CYRILLIC CAPITAL LETTER TSHE (`U+040B`). + - CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS (`U+0468`). + - CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS (`U+046C`). + - CYRILLIC CAPITAL LETTER BASHKIR KA (`U+04A0`). + - CYRILLIC SMALL LETTER BASHKIR KA (`U+04A1`). + - CYRILLIC CAPITAL LIGATURE TE TSE (`U+04B4`). + - CYRILLIC SMALL LIGATURE TE TSE (`U+04B5`). + - CYRILLIC CAPITAL LETTER YERU WITH BACK YER (`U+A650`). + - CYRILLIC SMALL LETTER YERU WITH BACK YER (`U+A651`). + - CYRILLIC CAPITAL LETTER TCHE (`U+A692`). + - CYRILLIC SMALL LETTER TCHE (`U+A693`). + - LATIN EPIGRAPHIC LETTER ARCHAIC M (`U+A7FF`). + - MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER (`U+1E06C`). + + ### 32.2.0 * Make M-width small-capital characters slightly narrower under Quasi-Proportional. Affected characters: diff --git a/changes/32.2.1.md b/changes/32.2.1.md new file mode 100644 index 0000000000..b73f3165ce --- /dev/null +++ b/changes/32.2.1.md @@ -0,0 +1,15 @@ +* Make certain characters slightly wider under Quasi-Proportional. Affected characters: + - CYRILLIC CAPITAL LETTER DJE (`U+0402`). + - CYRILLIC CAPITAL LETTER TSHE (`U+040B`). + - CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS (`U+0468`). + - CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS (`U+046C`). + - CYRILLIC CAPITAL LETTER BASHKIR KA (`U+04A0`). + - CYRILLIC SMALL LETTER BASHKIR KA (`U+04A1`). + - CYRILLIC CAPITAL LIGATURE TE TSE (`U+04B4`). + - CYRILLIC SMALL LIGATURE TE TSE (`U+04B5`). + - CYRILLIC CAPITAL LETTER YERU WITH BACK YER (`U+A650`). + - CYRILLIC SMALL LETTER YERU WITH BACK YER (`U+A651`). + - CYRILLIC CAPITAL LETTER TCHE (`U+A692`). + - CYRILLIC SMALL LETTER TCHE (`U+A693`). + - LATIN EPIGRAPHIC LETTER ARCHAIC M (`U+A7FF`). + - MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER (`U+1E06C`). diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md index 54620fb981..69db85facf 100644 --- a/doc/PACKAGE-LIST.md +++ b/doc/PACKAGE-LIST.md @@ -1,7 +1,7 @@ -# Package list of Release 32.2.0 +# Package list of Release 32.2.1 ## Prebuilt Packages Iosevka provides a large variety of variants. Prebuilt variants are listed below. For all Monospace variants' packages, it will contain three _spacing variants_. You can either download the package containing all the spacing variants (recommended), or cherry-pick the variant with specific spacing. @@ -22,146 +22,146 @@ Iosevka provides various packaging formats, here is the list of them: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + +
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka AileQuasi-proportional, Sans-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka EtoileQuasi-proportional, Slab-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg index 1383bbc120..a4f1d78585 100644 --- a/images/button-release.dark.svg +++ b/images/button-release.dark.svg @@ -9,7 +9,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/images/button-release.light.svg b/images/button-release.light.svg index 5802449891..6f9e93b31f 100644 --- a/images/button-release.light.svg +++ b/images/button-release.light.svg @@ -9,7 +9,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/images/cs-block-armenian.dark.svg b/images/cs-block-armenian.dark.svg index 16100c9e1f..a684162499 100644 --- a/images/cs-block-armenian.dark.svg +++ b/images/cs-block-armenian.dark.svg @@ -91,7 +91,7 @@ - + diff --git a/images/cs-block-armenian.light.svg b/images/cs-block-armenian.light.svg index 780315a27d..8a3ca38dff 100644 --- a/images/cs-block-armenian.light.svg +++ b/images/cs-block-armenian.light.svg @@ -91,7 +91,7 @@ - + diff --git a/images/cs-block-combining-diacritical-marks-extended.dark.svg b/images/cs-block-combining-diacritical-marks-extended.dark.svg index 1add50843e..e68a7a7dc3 100644 --- a/images/cs-block-combining-diacritical-marks-extended.dark.svg +++ b/images/cs-block-combining-diacritical-marks-extended.dark.svg @@ -307,11 +307,9 @@ - + - - - + @@ -320,11 +318,9 @@ - + - - - + @@ -333,11 +329,9 @@ - + - - - + @@ -346,11 +340,9 @@ - + - - - + @@ -359,12 +351,10 @@ - + - - - - + + @@ -373,11 +363,9 @@ - + - - - + @@ -386,11 +374,9 @@ - + - - - + @@ -399,11 +385,9 @@ - + - - - + @@ -412,11 +396,9 @@ - + - - - + @@ -425,11 +407,9 @@ - + - - - + @@ -438,11 +418,9 @@ - + - - - + @@ -451,11 +429,9 @@ - + - - - + @@ -464,11 +440,9 @@ - + - - - + @@ -477,11 +451,9 @@ - + - - - + diff --git a/images/cs-block-combining-diacritical-marks-extended.light.svg b/images/cs-block-combining-diacritical-marks-extended.light.svg index 2d7a104497..e139fe4433 100644 --- a/images/cs-block-combining-diacritical-marks-extended.light.svg +++ b/images/cs-block-combining-diacritical-marks-extended.light.svg @@ -307,11 +307,9 @@ - + - - - + @@ -320,11 +318,9 @@ - + - - - + @@ -333,11 +329,9 @@ - + - - - + @@ -346,11 +340,9 @@ - + - - - + @@ -359,12 +351,10 @@ - + - - - - + + @@ -373,11 +363,9 @@ - + - - - + @@ -386,11 +374,9 @@ - + - - - + @@ -399,11 +385,9 @@ - + - - - + @@ -412,11 +396,9 @@ - + - - - + @@ -425,11 +407,9 @@ - + - - - + @@ -438,11 +418,9 @@ - + - - - + @@ -451,11 +429,9 @@ - + - - - + @@ -464,11 +440,9 @@ - + - - - + @@ -477,11 +451,9 @@ - + - - - + diff --git a/images/cs-block-combining-diacritical-marks-supplement.dark.svg b/images/cs-block-combining-diacritical-marks-supplement.dark.svg index f6fdeaa50f..6e5519bb58 100644 --- a/images/cs-block-combining-diacritical-marks-supplement.dark.svg +++ b/images/cs-block-combining-diacritical-marks-supplement.dark.svg @@ -786,11 +786,9 @@ - + - - - + diff --git a/images/cs-block-combining-diacritical-marks-supplement.light.svg b/images/cs-block-combining-diacritical-marks-supplement.light.svg index 1f78333a64..8a7383e50a 100644 --- a/images/cs-block-combining-diacritical-marks-supplement.light.svg +++ b/images/cs-block-combining-diacritical-marks-supplement.light.svg @@ -786,11 +786,9 @@ - + - - - + diff --git a/images/cs-block-cyrillic-extended-b.dark.svg b/images/cs-block-cyrillic-extended-b.dark.svg index ba4f3aa98e..c0b59549c5 100644 --- a/images/cs-block-cyrillic-extended-b.dark.svg +++ b/images/cs-block-cyrillic-extended-b.dark.svg @@ -53,12 +53,12 @@ - - - - - - + + + + + + @@ -89,12 +89,12 @@ - - + + - - + + diff --git a/images/cs-block-cyrillic-extended-b.light.svg b/images/cs-block-cyrillic-extended-b.light.svg index e08b6e6c86..bcad473c27 100644 --- a/images/cs-block-cyrillic-extended-b.light.svg +++ b/images/cs-block-cyrillic-extended-b.light.svg @@ -53,12 +53,12 @@ - - - - - - + + + + + + @@ -89,12 +89,12 @@ - - + + - - + + diff --git a/images/cs-block-cyrillic-extended-d.dark.svg b/images/cs-block-cyrillic-extended-d.dark.svg index 9f4a25abf8..fca8095969 100644 --- a/images/cs-block-cyrillic-extended-d.dark.svg +++ b/images/cs-block-cyrillic-extended-d.dark.svg @@ -77,7 +77,7 @@ - + diff --git a/images/cs-block-cyrillic-extended-d.light.svg b/images/cs-block-cyrillic-extended-d.light.svg index bd9d4e03b8..5fc980517c 100644 --- a/images/cs-block-cyrillic-extended-d.light.svg +++ b/images/cs-block-cyrillic-extended-d.light.svg @@ -77,7 +77,7 @@ - + diff --git a/images/cs-block-cyrillic.dark.svg b/images/cs-block-cyrillic.dark.svg index f6aeaeb4cc..30c6e291f1 100644 --- a/images/cs-block-cyrillic.dark.svg +++ b/images/cs-block-cyrillic.dark.svg @@ -34,7 +34,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -183,8 +183,8 @@ - - + + diff --git a/images/cs-block-cyrillic.light.svg b/images/cs-block-cyrillic.light.svg index 148d911756..e39cac0cc3 100644 --- a/images/cs-block-cyrillic.light.svg +++ b/images/cs-block-cyrillic.light.svg @@ -34,7 +34,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -183,8 +183,8 @@ - - + + diff --git a/images/cs-block-ipa-extensions.dark.svg b/images/cs-block-ipa-extensions.dark.svg index 4c555c4db8..47cf8356d7 100644 --- a/images/cs-block-ipa-extensions.dark.svg +++ b/images/cs-block-ipa-extensions.dark.svg @@ -103,7 +103,7 @@ - + diff --git a/images/cs-block-ipa-extensions.light.svg b/images/cs-block-ipa-extensions.light.svg index f61e656b97..7988d63bb3 100644 --- a/images/cs-block-ipa-extensions.light.svg +++ b/images/cs-block-ipa-extensions.light.svg @@ -103,7 +103,7 @@ - + diff --git a/images/cs-block-latin-extended-f.dark.svg b/images/cs-block-latin-extended-f.dark.svg index a505cc6066..65419aff92 100644 --- a/images/cs-block-latin-extended-f.dark.svg +++ b/images/cs-block-latin-extended-f.dark.svg @@ -29,7 +29,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/images/cs-block-latin-extended-f.light.svg b/images/cs-block-latin-extended-f.light.svg index b8fcc92acf..e60cdc6841 100644 --- a/images/cs-block-latin-extended-f.light.svg +++ b/images/cs-block-latin-extended-f.light.svg @@ -29,7 +29,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/images/cs-block-latin-extended-g.dark.svg b/images/cs-block-latin-extended-g.dark.svg index e31bf204bc..f4cf8fe092 100644 --- a/images/cs-block-latin-extended-g.dark.svg +++ b/images/cs-block-latin-extended-g.dark.svg @@ -24,7 +24,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/images/cs-block-latin-extended-g.light.svg b/images/cs-block-latin-extended-g.light.svg index 929fdbac2b..96d9cf1057 100644 --- a/images/cs-block-latin-extended-g.light.svg +++ b/images/cs-block-latin-extended-g.light.svg @@ -24,7 +24,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/images/cs-block-letterlike-symbols.dark.svg b/images/cs-block-letterlike-symbols.dark.svg index 80c793c571..0142dab765 100644 --- a/images/cs-block-letterlike-symbols.dark.svg +++ b/images/cs-block-letterlike-symbols.dark.svg @@ -29,7 +29,7 @@ - + diff --git a/images/cs-block-letterlike-symbols.light.svg b/images/cs-block-letterlike-symbols.light.svg index 57675275d0..d800b5339b 100644 --- a/images/cs-block-letterlike-symbols.light.svg +++ b/images/cs-block-letterlike-symbols.light.svg @@ -29,7 +29,7 @@ - + diff --git a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg index d7d2525526..3e2cd1edb6 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.dark.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.dark.svg @@ -182,16 +182,16 @@ - + - + - - + + - + @@ -274,20 +274,20 @@ - + - + - + - + - + - + diff --git a/images/cs-block-mathematical-alphanumeric-symbols.light.svg b/images/cs-block-mathematical-alphanumeric-symbols.light.svg index dffa3da15b..30cb83c2b8 100644 --- a/images/cs-block-mathematical-alphanumeric-symbols.light.svg +++ b/images/cs-block-mathematical-alphanumeric-symbols.light.svg @@ -182,16 +182,16 @@ - + - + - - + + - + @@ -274,20 +274,20 @@ - + - + - + - + - + - + diff --git a/images/cs-block-phonetic-extensions-supplement.dark.svg b/images/cs-block-phonetic-extensions-supplement.dark.svg index 6c2f1d0d8f..592f65a01f 100644 --- a/images/cs-block-phonetic-extensions-supplement.dark.svg +++ b/images/cs-block-phonetic-extensions-supplement.dark.svg @@ -45,7 +45,7 @@ - + diff --git a/images/cs-block-phonetic-extensions-supplement.light.svg b/images/cs-block-phonetic-extensions-supplement.light.svg index b03b32449c..d744c2d154 100644 --- a/images/cs-block-phonetic-extensions-supplement.light.svg +++ b/images/cs-block-phonetic-extensions-supplement.light.svg @@ -45,7 +45,7 @@ - + diff --git a/images/cs-block-phonetic-extensions.dark.svg b/images/cs-block-phonetic-extensions.dark.svg index c090f6d617..7111350d6e 100644 --- a/images/cs-block-phonetic-extensions.dark.svg +++ b/images/cs-block-phonetic-extensions.dark.svg @@ -54,7 +54,7 @@ - + diff --git a/images/cs-block-phonetic-extensions.light.svg b/images/cs-block-phonetic-extensions.light.svg index 510a68e1c1..42ecafeaa0 100644 --- a/images/cs-block-phonetic-extensions.light.svg +++ b/images/cs-block-phonetic-extensions.light.svg @@ -54,7 +54,7 @@ - + diff --git a/images/languages.dark.svg b/images/languages.dark.svg index bac61b1fdd..82bc2422f4 100644 --- a/images/languages.dark.svg +++ b/images/languages.dark.svg @@ -80,7 +80,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -308,7 +308,7 @@ - + diff --git a/images/languages.light.svg b/images/languages.light.svg index e80c3d438d..c87659315e 100644 --- a/images/languages.light.svg +++ b/images/languages.light.svg @@ -80,7 +80,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -308,7 +308,7 @@ - + diff --git a/package-lock.json b/package-lock.json index a8e691dcc7..25790066a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "32.2.0", + "version": "32.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "32.2.0", + "version": "32.2.1", "workspaces": [ "packages/*", "tools/*" @@ -5153,16 +5153,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "32.2.0", - "@iosevka/font-otl": "32.2.0", - "@iosevka/geometry": "32.2.0", - "@iosevka/geometry-cache": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/param": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/font-glyphs": "32.2.1", + "@iosevka/font-otl": "32.2.1", + "@iosevka/geometry": "32.2.1", + "@iosevka/geometry-cache": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/param": "32.2.1", + "@iosevka/util": "32.2.1", "@msgpack/msgpack": "^2.8.0", "harfbuzzjs": "^0.4.3", "ot-builder": "^1.7.4", @@ -5171,86 +5171,86 @@ }, "packages/font-glyphs": { "name": "@iosevka/font-glyphs", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/font-kits": "32.2.0", - "@iosevka/geometry": "32.2.0", - "@iosevka/geometry-cache": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/font-kits": "32.2.1", + "@iosevka/geometry": "32.2.1", + "@iosevka/geometry-cache": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/util": "32.2.1", "typo-geom": "^0.16.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/geometry": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/geometry": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/util": "32.2.1", "typo-geom": "^0.16.1" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/font-glyphs": "32.2.0", - "@iosevka/glyph": "32.2.0", + "@iosevka/font-glyphs": "32.2.1", + "@iosevka/glyph": "32.2.1", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/util": "32.2.0", + "@iosevka/util": "32.2.1", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/geometry": "32.2.0", + "@iosevka/geometry": "32.2.1", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/geometry": "32.2.0" + "@iosevka/geometry": "32.2.1" } }, "packages/param": { "name": "@iosevka/param", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/util": "32.2.0" + "@iosevka/util": "32.2.1" } }, "packages/util": { "name": "@iosevka/util", - "version": "32.2.0" + "version": "32.2.1" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "32.2.0", + "@iosevka/param": "32.2.1", "@unicode/unicode-16.0.0": "^1.6.4", "semver": "^7.6.3" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "32.2.0", + "@iosevka/param": "32.2.1", "@msgpack/msgpack": "^2.8.0", "@unicode/unicode-16.0.0": "^1.6.4", "cldr": "^7.6.0" @@ -5258,16 +5258,16 @@ }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/data-export": "32.2.0" + "@iosevka/data-export": "32.2.1" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "32.2.0", + "version": "32.2.1", "dependencies": { - "@iosevka/util": "32.2.0", + "@iosevka/util": "32.2.1", "@unicode/unicode-16.0.0": "^1.6.4", "semver": "^7.6.3", "wawoff2": "^2.0.1" diff --git a/package.json b/package.json index 309726b474..9af4900ddb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "32.2.0", + "version": "32.2.1", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index cf70b88656..e3c52268a3 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./lib/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./lib/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "32.2.0", - "@iosevka/geometry": "32.2.0", - "@iosevka/geometry-cache": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/font-kits": "32.2.1", + "@iosevka/geometry": "32.2.1", + "@iosevka/geometry-cache": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/util": "32.2.1", "typo-geom": "^0.16.1" } } diff --git a/packages/font-glyphs/src/auto-build/composite.ptl b/packages/font-glyphs/src/auto-build/composite.ptl index d07529339d..b89353e378 100644 --- a/packages/font-glyphs/src/auto-build/composite.ptl +++ b/packages/font-glyphs/src/auto-build/composite.ptl @@ -119,7 +119,7 @@ glyph-block AutoBuild-Enclosure : begin define circleWidthClasses {{'NWID' Width 0.12} {'WWID' WideWidth0 0.08}} define [AdjustDigitCount digits width] : Math.max 1 (digits * Width / width) - define [EnclosureStrokeScale dscale digits width] : dscale / [Math.pow [AdjustDigitCount digits width] 0.66] + define [EnclosureStrokeScale dscale digits width] : dscale / ([AdjustDigitCount digits width] ** 0.66) define enclosureInnerPartActualWidth : new Map @@ -213,14 +213,14 @@ glyph-block AutoBuild-Enclosure : begin return : {}.concat finalPartsFirstHalf finalPartsSecondHalf - define [CircCrowd digits width] : 2 + 2 * [Math.pow [AdjustDigitCount digits width] (2 / 3)] * [Math.max 1 (HalfUPM / Width)] - define [CircScale digits width] : 0.65 / [Math.pow [AdjustDigitCount digits width] 0.5] + define [CircCrowd digits width] : 2 + 2 * ([AdjustDigitCount digits width] ** (2 / 3)) * [Math.max 1 (HalfUPM / Width)] + define [CircScale digits width] : 0.65 / ([AdjustDigitCount digits width] ** (1 / 2)) define [CircleDimens digits w m] : begin define width : fallback w Width define dscale : linreg HalfUPM 0.55 UPM 0.6 width define spatt : [linreg HalfUPM 0.22 UPM 0.27 width] * (Width / HalfUPM) - define sw0 : [EnclosureStrokeScale dscale digits width] * [AdviceStroke [CircCrowd digits width]] / [CircScale digits width] + define sw0 : [EnclosureStrokeScale dscale digits width] * [AdviceStroke : CircCrowd digits width] / [CircScale digits width] define sw : Math.max sw0 [fallback m 0] define top : SymbolMid + CAP * dscale / 2 + (CAP * spatt) define bot : SymbolMid - CAP * dscale / 2 - (CAP * spatt) @@ -426,7 +426,7 @@ glyph-block AutoBuild-Enclosure : begin include : AddEnclosureMarkTwoLine digits : CircleDimens digits ww define [AddEnclosureMarkTwoLine digits dimens] : glyph-proc define [object width dscale mockInnerWidth] dimens - set-base-anchor 'enclosureInnerFirstHalf' (0.5 * width - 0.5 * dscale * [Math.min (Width * digits) mockInnerWidth]) 0 + set-base-anchor 'enclosureInnerFirstHalf' (0.5 * width - 0.5 * dscale * [Math.min (Width * digits) mockInnerWidth]) 0 set-base-anchor 'enclosureInnerSecondHalf' (0.5 * width - 0.5 * dscale * [Math.min (Width * digits) mockInnerWidth]) 0 define [createPlayingCardGlyphs digits demands] @@ -627,12 +627,12 @@ glyph-block AutoBuild-Enclosure : begin archDepthB - sw + sw1 include : AddEnclosureMark digits : CircleDimens digits ww - define [BraceCrowd digits width] : 2.75 + [AdjustDigitCount digits width] - define [BraceScale digits width] : 0.65 / [Math.pow [AdjustDigitCount digits width] 0.5] + define [BraceCrowd digits width] : 2.75 + [AdjustDigitCount digits width] + define [BraceScale digits width] : 0.65 / ([AdjustDigitCount digits width] ** (1 / 2)) define [bracedDottedDimens digits width] : begin define dscale : linreg Width 0.55 UPM 0.65 width define pscale : linreg Width 0.6 UPM 0.75 width - define sw0 : [EnclosureStrokeScale dscale digits width] * [AdviceStroke [BraceCrowd digits width]] / [BraceScale digits width] + define sw0 : [EnclosureStrokeScale dscale digits width] * [AdviceStroke : BraceCrowd digits width] / [BraceScale digits width] define sw : Math.min Stroke sw0 define l : Math.max (SB + O * 3) (width / 2 - [Math.max (Width * digits) CAP] / 2) define r : width - l @@ -730,8 +730,8 @@ glyph-block AutoBuild-Enclosure : begin include : Regizmo include : AddEnclosureMark digits : bracedDottedDimens digits ww - define [DottedCrowd digits width] : 2 + [AdjustDigitCount digits width] - define [DottedScale digits width] : 1 / [Math.pow [AdjustDigitCount digits width] 0.5] + define [DottedCrowd digits width] : 2 + [AdjustDigitCount digits width] + define [DottedScale digits width] : 1 / ([AdjustDigitCount digits width] ** (1 / 2)) define [createDottedGlyphs digits demands] : begin foreach {suffix ww} [items-of circleWidthClasses] : do define jobs : CollectJobs DECOMPOSABLE NOT-CENTERED ALLOW-PROPORTIONAL ('dotted' + digits) suffix demands @@ -837,7 +837,7 @@ glyph-block AutoBuild-Enclosure : begin list 0x1F16D {'C' 'C'} WideWidth2 list 0x1F12D {'C' 'D'} WideWidth1 list 0x1F12E {'W' 'smcpZ'} WideWidth1 - foreach [j : range 10 till 20] : compositions.push : list (0x2460 + j - 1) [digitGlyphNames j] WideWidth1 + foreach [j : range 10 till 20] : compositions.push : list (0x2460 + j - 1) [digitGlyphNames j] WideWidth1 foreach [j : range 21 till 35] : compositions.push : list (0x3251 + j - 21) [digitGlyphNames j] WideWidth1 foreach [j : range 36 till 50] : compositions.push : list (0x32B1 + j - 36) [digitGlyphNames j] WideWidth1 createCircledGlyphs 2 compositions diff --git a/packages/font-glyphs/src/auto-build/recursive-build.ptl b/packages/font-glyphs/src/auto-build/recursive-build.ptl index d3669bce2f..e98a269974 100644 --- a/packages/font-glyphs/src/auto-build/recursive-build.ptl +++ b/packages/font-glyphs/src/auto-build/recursive-build.ptl @@ -75,7 +75,7 @@ glyph-block Recursive-Build-ParaTfm : begin define ForkTfm : namespace define [boldGrade g] : begin local pGrade : (900 - g) / 100 - return : 900 - 100 * (2 / 25) * pGrade * pGrade + return : 900 - 100 * (2 / 25) * (pGrade ** 2) export : define [Bold a] : begin [set a.shape.weight : boldGrade a.shape.weight] export : define [Italic a] : begin diff --git a/packages/font-glyphs/src/common/shapes.ptl b/packages/font-glyphs/src/common/shapes.ptl index f4ee78ccde..5c21db27b2 100644 --- a/packages/font-glyphs/src/common/shapes.ptl +++ b/packages/font-glyphs/src/common/shapes.ptl @@ -2,9 +2,8 @@ $$include '../meta/macros.ptl' import [mix linreg clamp fallback boole boolePn] from "@iosevka/util" import [Transform] from "@iosevka/geometry/transform" -import [FunctionInterpolator WithKnotProxy AfCombine] from "@iosevka/geometry/spiro-control" +import [FunctionInterpolator AfCombine] from "@iosevka/geometry/spiro-control" import [RadicalGeometry StrokeGeometry RemoveHolesGeometry] from "@iosevka/geometry" -import [CMixCoord CopyBackKnotProxy] from "@iosevka/font-kits/derived-coordinates" glyph-module @@ -372,7 +371,7 @@ glyph-block CommonShapes : begin local superness DesignParameters.superness local r : piecewise (w <= v) 0.5 - true : 1 / ([Math.pow (1 - [Math.pow (1 - v / w) superness]) (1 / superness)] + 1) + true : 1 / (((1 - ((1 - v / w) ** superness)) ** (1 / superness)) + 1) if swash : begin local idepth : w - sw local iwidth : u * r - sw @@ -469,9 +468,6 @@ glyph-block CommonShapes : begin define [hookEndBlender before after args] : begin return : HookShape before after false args - define [hookProxy args] : begin - return : new CopyBackKnotProxy [g4 [new CMixCoord 0.5] args.yRef] args 2 - glyph-block-export hookstart define flex-params [hookstart] : begin local-parameter : y @@ -481,7 +477,7 @@ glyph-block CommonShapes : begin local-parameter : noSwash -- false local-parameter : o -- O local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] - return : WithKnotProxy [hookProxy args] : new FunctionInterpolator hookStartBlender args + return : new FunctionInterpolator hookStartBlender args glyph-block-export hookend define flex-params [hookend] : begin @@ -492,7 +488,7 @@ glyph-block CommonShapes : begin local-parameter : noSwash -- false local-parameter : o -- O local args : object [yRef y] sw swTerminal isTail noSwash [overshoot o] - return : WithKnotProxy [hookProxy args] : new FunctionInterpolator hookEndBlender args + return : new FunctionInterpolator hookEndBlender args glyph-block-export flatside define flatside : namespace @@ -592,13 +588,13 @@ glyph-block CommonShapes : begin if [not angle] : return 0 local s : Math.sin (angle * Math.PI / 180) local sign : if (s < 0) (-1) 1 - return : sign * [Math.pow [Math.abs s] (2 / superness)] + return : sign * ([Math.abs s] ** (2 / superness)) define [superCos angle superness] : begin if [not angle] : return 1 local c : Math.cos (angle * Math.PI / 180) local sign : if (c < 0) (-1) 1 - return : sign * [Math.pow [Math.abs c] (2 / superness)] + return : sign * ([Math.abs c] ** (2 / superness)) define [mixR w angW v angV u] : begin if (w < v) : return : 1 - [mixR v angV w angW u] @@ -613,16 +609,10 @@ glyph-block CommonShapes : begin local chrW : radW * [superCos angW super] return : chrW / (chrV + chrW) : else : begin - local r : 1 / ([Math.pow (1 - [Math.pow (1 - v / w) super]) (1 / super)] + 1) + local r : 1 / (((1 - ((1 - v / w) ** super)) ** (1 / super)) + 1) set r : 0.5 + (r - 0.5) * (v + w) / (u * 2) return r - define [archBlenderProxy args] : begin - local p : [if args.compact g2 g4] - new CMixCoord [fallback args.p 0.5] 0 args.mockPre args.mockPost - begin args.y - return : new CopyBackKnotProxy p args 2 - define [archBlender _before _after args] : begin local before : fallback args.mockPre _before local after : fallback args.mockPost _after @@ -656,8 +646,7 @@ glyph-block CommonShapes : begin local-parameter : blendPre -- [if anglePre nothing [arcvh]] local-parameter : blendPost -- [if anglePost nothing [archv]] local args : object [lhs true] y p sw compact o swBefore swAfter mockPre mockPost blendPre blendPost anglePre anglePost - return : WithKnotProxy [archBlenderProxy args] - new FunctionInterpolator archBlender args + return : new FunctionInterpolator archBlender args export : define flex-params [rhs] : begin local-parameter : y @@ -674,8 +663,7 @@ glyph-block CommonShapes : begin local-parameter : blendPre -- [if anglePre nothing [arcvh]] local-parameter : blendPost -- [if anglePost nothing [archv]] local args : object [lhs false] y p sw compact o swBefore swAfter mockPre mockPost blendPre blendPost anglePre anglePost - return : WithKnotProxy [archBlenderProxy args] - new FunctionInterpolator archBlender args + return : new FunctionInterpolator archBlender args foreach side {lhs rhs} : begin set side.centerAt : object diff --git a/packages/font-glyphs/src/index.ptl b/packages/font-glyphs/src/index.ptl index b8ca712283..2ac190f6ed 100644 --- a/packages/font-glyphs/src/index.ptl +++ b/packages/font-glyphs/src/index.ptl @@ -4,7 +4,6 @@ import [GlyphBlock GlyphBuildExecutor GlyphSaveSink] from "@iosevka/glyph/block" import as Gr from "@iosevka/glyph/relation" import as SpiroKit from "@iosevka/font-kits/spiro-kit" import as BooleKit from "@iosevka/font-kits/boole-kit" -import as DerivedCoordinates from "@iosevka/font-kits/derived-coordinates" import [DesignParameters calculateMetrics setFontMetrics GenDivFrame] from "./meta/aesthetics.mjs" import [$NamedParameterPair$] from "@iosevka/util" @@ -44,7 +43,6 @@ export : define [buildGlyphs para recursive] : begin Superness DesignParameters.superness define BooleFns : BooleKit.SetupBuilders : object globalTransform Metrics.GlobalTransform - define DerivedCoordinateFns : DerivedCoordinates.SetupBuilders : object # Setup the capture define $$Capture$$ : object @@ -57,7 +55,6 @@ export : define [buildGlyphs para recursive] : begin glyphStore SpiroFns BooleFns - DerivedCoordinateFns DivFrame MarkSet AS_BASE diff --git a/packages/font-glyphs/src/letter-like/fraktur.ptl b/packages/font-glyphs/src/letter-like/fraktur.ptl index d9345177f1..b273078219 100644 --- a/packages/font-glyphs/src/letter-like/fraktur.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur.ptl @@ -5,14 +5,14 @@ export : define [apply] : begin run-glyph-module "./fraktur/common.mjs" run-glyph-module "./fraktur/upper-au.mjs" - run-glyph-module "./fraktur/upper-bvw.mjs" + run-glyph-module "./fraktur/upper-bpvw.mjs" run-glyph-module "./fraktur/upper-ceg.mjs" run-glyph-module "./fraktur/upper-doq.mjs" run-glyph-module "./fraktur/upper-ft.mjs" run-glyph-module "./fraktur/upper-hkry.mjs" run-glyph-module "./fraktur/upper-ij.mjs" run-glyph-module "./fraktur/upper-l.mjs" - run-glyph-module "./fraktur/upper-mnp.mjs" + run-glyph-module "./fraktur/upper-mn.mjs" run-glyph-module "./fraktur/upper-s.mjs" run-glyph-module "./fraktur/upper-z.mjs" diff --git a/packages/font-glyphs/src/letter-like/fraktur/common.ptl b/packages/font-glyphs/src/letter-like/fraktur/common.ptl index b1e2bb24f3..9b8dce2d25 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/common.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/common.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback min max slY] from "@iosevka/util" import [SpiroPenGeometry] from "@iosevka/geometry" import [Vec2] from "@iosevka/geometry/point" import [Box] from "@iosevka/geometry/box" @@ -194,18 +194,18 @@ glyph-block LetterLike-Fraktur-Common : begin define [LowerDf div m] : DivFrame [fallback div 1] [fallback m 2] [Math.max 1 : (1.75 * DecoSizeX - 0.5 * S.thick) / SB] glyph-block-export RBDecoration - define [RBDecoration cx cy limy] : list - curl cx [min@ [fallback limy VERY-FAR] [post@slope : 2 * SlopeB]] - [flatc.sr SlopeB].end (pre@ <+> 0.5 * DecoSizeX) cy - corner (pre@ <+> DecoSizeX) (pre@ <+> DecoSizeY) + define [RBDecoration cx cy limy] : lift-@ : list + curl (@x1 = cx) [min [fallback limy VERY-FAR] [slY @x2 @y2 @x1 : 2 * SlopeB]] + [flatc.sr SlopeB].end (@x2 = @x1 + 0.5 * DecoSizeX) (@y2 = cy) + corner (@x2 + DecoSizeX) (@y2 + DecoSizeY) glyph-block-export LTDecoration - define [LTDecoration cx cy limy] : list - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) cy - flat cx [max@ [fallback limy (-VERY-FAR)] [pre@slope : 2 * SlopeB]] - - set [LTDecoration.g2 cx cy limy] : list - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) cy - g2 cx [max@ [fallback limy (-VERY-FAR)] [pre@slope : 2 * SlopeB]] + define [LTDecoration cx cy limy] : lift-@ : list + corner (@x2 - DecoSizeX) (@y2 - DecoSizeY) + [ccurl.sr SlopeB].start (@x2 = @x3 - 0.5 * DecoSizeX) (@y2 = cy) + flat (@x3 = cx) [max [fallback limy (-VERY-FAR)] [slY @x2 @y2 @x3 : 2 * SlopeB]] + + set [LTDecoration.g2 cx cy limy] : lift-@ : list + corner (@x2 - DecoSizeX) (@y2 - DecoSizeY) + [ccurl.sr SlopeB].start (@x2 = @x3 - 0.5 * DecoSizeX) (@y2 = cy) + g2 (@x3 = cx) [max [fallback limy (-VERY-FAR)] [slY @x2 @y2 @x3 : 2 * SlopeB]] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl index 4f1dfc110f..878dc9a9ad 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-agq.ptl @@ -1,5 +1,7 @@ $$include '../../meta/macros.ptl' +import [mix slY] from "@iosevka/util" + glyph-module glyph-block LetterLike-Fraktur-Lower-AQ : begin @@ -9,12 +11,12 @@ glyph-block LetterLike-Fraktur-Lower-AQ : begin glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB glyph-block-import LetterLike-Fraktur-Common : Wave PHexTop PHexBot RBDecoration - define [LeftHalfShape mode box] : fraktur-stroke S - corner box.right [post@slope SlopeB] - corner [box.xp PHexTop] box.top - g2.down.mid (box.left - OX) [pre@mix@post 0.5] - corner [box.xp PHexBot] box.bot - corner box.right [pre@slope SlopeA] + define [LeftHalfShape mode box] : lift-@ : fraktur-stroke S + corner (@xR = box.right) [slY @xT @yT @xR SlopeB] + corner (@xT = [box.xp PHexTop]) (@yT = box.top) + g2.down.mid (box.left - OX) box.yMid + corner (@xB = [box.xp PHexBot]) (@yB = box.bot) + corner @xR [slY @xB @yB @xR SlopeA] create-glyph "frak/a" 0x1D51E : glyph-proc local df : include : LowerDf 1 @@ -35,12 +37,12 @@ glyph-block LetterLike-Fraktur-Lower-AQ : begin local gBox : S.box XH Descender df.leftSB df.rightSB local leftStroke : include : LeftHalfShape 'p' aBox - local rightStroke : include : fraktur-stroke S - corner [leftStroke.first].x [leftStroke.first].y - corner pre@ [leftStroke.last].y - g2 (pre@ <+> 0.5 * DecoSizeX) (post@ <+> SmallArchDepthA) - hookend (sw -- S.thick) gBox.bot - g4 gBox.left (pre@ <+> SHook) + local rightStroke : include : lift-@ : fraktur-stroke S + corner [leftStroke.first].x [leftStroke.first].y + corner (@xR = [leftStroke.last].x) [leftStroke.last].y + g2 (@xR + 0.5 * DecoSizeX) (@yB + SmallArchDepthA) + hookend (sw -- S.thick) (@yB = gBox.bot) + g4 gBox.left (@yB + SHook) create-glyph "frak/q" 0x1D52E : glyph-proc diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl index b7be9e4969..43c47aca4f 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-bopvw.ptl @@ -1,5 +1,7 @@ $$include '../../meta/macros.ptl' +import [mix fallback min max slY] from "@iosevka/util" + glyph-module glyph-block LetterLike-Fraktur-Lower-BOPVW : begin @@ -9,15 +11,15 @@ glyph-block LetterLike-Fraktur-Lower-BOPVW : begin glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot LTDecoration - define [ORightShape mode profile oBox] : fraktur-stroke profile - corner oBox.left [post@slope SlopeA] - [cg2.sr SlopeB].start [oBox.xp PHexTop] oBox.top - g2.down.mid (oBox.right - OX) [pre@mix@post 0.5] - [g2c.sl SlopeA].start [oBox.xp PHexBot] oBox.bot - corner oBox.left [pre@slope SlopeB] + define [ORightShape mode profile oBox] : lift-@ : fraktur-stroke profile + corner (@x1 = oBox.left) [slY @x2 @y2 @x1 SlopeA] + [cg2.sr SlopeB].start (@x2 = [oBox.xp PHexTop]) (@y2 = oBox.top) + g2.down.mid (oBox.right - OX) [oBox.yp 0.5] + [g2c.sl SlopeA].start (@x4 = [oBox.xp PHexBot]) (@y4 = oBox.bot) + corner (@x5 = oBox.left) (@y5 = [slY @x4 @y4 @x5 SlopeB]) match mode [Just 'o'] : close - [Just 'p'] : ~~~ [corner (pre@ <-> DecoSizeX) (pre@ <-> DecoSizeY)] + [Just 'p'] : ~~~ [corner (@x5 - DecoSizeX) (@y5 - DecoSizeY)] ___ : list create-glyph "frak/o" 0xAB3D : glyph-proc @@ -51,7 +53,7 @@ glyph-block LetterLike-Fraktur-Lower-BOPVW : begin local rightStroke : include : ORightShape 'p' S oBox local leftStroke : include : fraktur-stroke S LTDecoration pBox.left pBox.top [rightStroke.first].y - corner pre@ pBox.bot + corner pBox.left pBox.bot create-glyph "frak/v" 0x1D533 : glyph-proc local df : include : LowerDf 1 @@ -73,13 +75,13 @@ glyph-block LetterLike-Fraktur-Lower-BOPVW : begin local leftHalfBox : wBox.withRight wBox.xMid local rightStroke : include : ORightShape 'o' M rightHalfBox - local middleStroke : include : fraktur-stroke M - corner leftHalfBox.left [post@slope SlopeA] - corner [leftHalfBox.xp PHexTop] leftHalfBox.top - corner leftHalfBox.right [pre@slope SlopeB] - corner pre@ [post@slope SlopeA] - corner [leftHalfBox.xp PHexBot] leftHalfBox.bot - corner leftHalfBox.left [pre@slope SlopeB] + local middleStroke : include : lift-@ : fraktur-stroke M + corner (@x1 = leftHalfBox.left) [slY @x2 @y2 @x1 SlopeA] + corner (@x2 = [leftHalfBox.xp PHexTop]) (@y2 = leftHalfBox.top) + corner (@x3 = leftHalfBox.right) [slY @x2 @y2 @x3 SlopeB] + corner @x3 [slY @x5 @y5 @x3 SlopeA] + corner (@x5 = [leftHalfBox.xp PHexBot]) (@y5 = leftHalfBox.bot) + corner (@x6 = leftHalfBox.left) [slY @x5 @y5 @x6 SlopeB] local leftStroke : include : fraktur-stroke M LTDecoration leftHalfBox.left leftHalfBox.top [middleStroke.first].y corner [middleStroke.last].x [middleStroke.last].y diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl index 70d739fd66..35ba8b7bb4 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-ce.ptl @@ -2,6 +2,8 @@ $$include '../../meta/macros.ptl' glyph-module +import [mix fallback min max slY] from "@iosevka/util" + glyph-block LetterLike-Fraktur-Lower-CE : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes @@ -14,15 +16,15 @@ glyph-block LetterLike-Fraktur-Lower-CE : begin include : df.markSet.e local box : S.box XH 0 df.leftSB df.rightSB - include : fraktur-stroke S - corner (box.left + S.thick) [post@slope SlopeA] - g2 box.xMid [box.yp DesignParameters.eBarPos] - corner box.right [pre@slope SlopeA] - corner [box.xp PHexTop] box.top - corner box.left [pre@slope SlopeA] - curl pre@ (post@ <+> ArchDepthB) - [g2c.sr (-SlopeA)].end [box.xp PHexTop] box.bot - corner box.right [pre@slope SlopeA] + include : lift-@ : fraktur-stroke S + corner (@x1 = @xL + S.thick) [slY @xM @y2 @x1 SlopeA] + g2 (@xM = box.xMid) (@y2 = [box.yp DesignParameters.eBarPos]) + corner (@xR = box.right) [slY @xM @y2 @xR SlopeA] + corner (@xT = [box.xp PHexTop]) (@yT = box.top) + corner (@xL = box.left) [slY @xT @yT @xL SlopeA] + curl @xL (@yB + ArchDepthB) + [g2c.sr (-SlopeA)].end @xT (@yB = box.bot) + corner @xR [slY @xT @yB @xR SlopeA] alias 'mathFrak/e' 0x1D522 'frak/e' @@ -31,10 +33,10 @@ glyph-block LetterLike-Fraktur-Lower-CE : begin include : df.markSet.e local box : S.box XH 0 df.leftSB df.rightSB - include : fraktur-stroke S - corner box.right [post@slope SlopeB] - corner [box.xp PHexTop] box.top - corner box.left [pre@slope SlopeA] - curl pre@ (post@ <+> ArchDepthB) - [g2c.sr (-SlopeA)].end [box.xp PHexTop] box.bot - corner box.right [pre@slope SlopeA] + include : lift-@ : fraktur-stroke S + corner (@xR = box.right) [slY @xT @yT @xR SlopeB] + corner (@xT = [box.xp PHexTop]) (@yT = box.top) + corner (@xL = box.left) [slY @xT @yT @xL SlopeA] + curl @xL (@yB + ArchDepthB) + [g2c.sr (-SlopeA)].end (@xB = [box.xp PHexTop]) (@yB = box.bot) + corner @xR [slY @xB @yB @xR SlopeA] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl index a78181b142..51315109a1 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-d.ptl @@ -2,6 +2,8 @@ $$include '../../meta/macros.ptl' glyph-module +import [mix slY] from "@iosevka/util" + glyph-block LetterLike-Fraktur-Lower-D : begin glyph-block-import Common-Derivatives glyph-block-import CommonShapes @@ -16,12 +18,12 @@ glyph-block LetterLike-Fraktur-Lower-D : begin local oBox : S.box XH 0 df.leftSB df.rightSB local dBox : S.box Ascender 0 df.leftSB df.rightSB - include : fraktur-stroke S - corner [oBox.xp PHexTop] oBox.top - ~~~ ~~~ [corner oBox.left [pre@slope SlopeA]] - ~~~ ~~~ [corner pre@ [post@slope SlopeB]] - ~~~ [corner [oBox.xp PHexBot] oBox.bot] - ~~~ ~~~ [straight.up.mid (oBox.right - OX) oBox.yMid] - [g4.sl SlopeB].mid pre@ pre@ - g2 oBox.left [pre@slope SlopeB] - [g2.sr SlopeA].end [oBox.xp 0.25] dBox.top [change-pen T] + include : lift-@ : fraktur-stroke S + corner (@xT = [oBox.xp PHexTop]) (@yT = oBox.top) + corner (@xL = oBox.left) [slY @xT @yT @xL SlopeA] + corner @xL [slY @xB @yB @xL SlopeB] + corner (@xB = [oBox.xp PHexBot]) (@yB = oBox.bot) + straight.up.mid (oBox.right - OX) oBox.yMid + [g4.sl SlopeB].mid @xT @yT + g2 @xL [slY @xT @yT @xL SlopeB] + [g2.sr SlopeA].end [oBox.xp 0.25] dBox.top [change-pen T] diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl index e07a6b2ac6..241118645d 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-fkrt.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix] from "@iosevka/util" +import [mix slY] from "@iosevka/util" glyph-module @@ -21,7 +21,7 @@ glyph-block LetterLike-Fraktur-Lower-F : begin g2 [box.xp (13/16)] (box.top - FHook) hookstart (sw -- S.thick) box.top g2 [box.xp (5/16)] (box.top - 0.5 * ArchDepthA) [change-pen T] - flat post@ (XH * DesignParameters.fBarPosToXH - S.thick) [change-pen S] + flat box.xMid (XH * DesignParameters.fBarPosToXH - S.thick) [change-pen S] curl box.xMid box.bottom include : fraktur-stroke F @@ -35,27 +35,27 @@ glyph-block LetterLike-Fraktur-Lower-F : begin local box : S.box Ascender 0 df.leftSB df.rightSB local xBox : T.box XH 0 df.leftSB df.rightSB - local centerStroke : include : fraktur-stroke S - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - corner (box.xMid - 0.75 * TBalance) box.top - corner pre@ [post@slope SlopeB] - corner [pre@mix@post PHexBot] box.bottom - corner [box.xp 0.875] [pre@slope SlopeA] + local centerStroke : include : lift-@ : fraktur-stroke S + corner (@xC - DecoSizeX) (@yT - DecoSizeY) + corner (@xC = box.xMid - 0.75 * TBalance) (@yT = box.top) + corner @xC [slY @xB @yB @xC SlopeB] + corner (@xB = [mix @xC @xR PHexBot]) (@yB = box.bottom) + corner (@xR = [box.xp 0.875]) [slY @xB @yB @xR SlopeA] include : fraktur-stroke F corner box.left xBox.top corner box.right xBox.top - include : fraktur-stroke F - g2.up.start [centerStroke.first 1].x xBox.top - arch.rhs (sw -- F.thick) (blendPost -- {}) [mix xBox.top box.top 0.75] 0.7 - g2 box.right [pre@mix@post 0.5] - g2 [pre@mix@post 0.25] xBox.top + include : lift-@ : fraktur-stroke F + g2.up.start (@xL = [centerStroke.first 1].x) xBox.top + arch.rhs (sw -- F.thick) (blendPost -- {}) (@yM = [mix xBox.top box.top 0.75]) 0.7 + g2 (@xR = box.right) [mix @yM @yT 0.5] + g2 [mix @xR @xL 0.25] (@yT = xBox.top) - define [RTBottom box p] : list - corner pre@ [post@slope SlopeB] - corner [pre@mix@post PHexBot] box.bottom - corner [box.xp p] [pre@slope SlopeA] + define [RTBottom xS box p] : lift-@ : list + corner xS [slY @xB @yB xS SlopeB] + corner (@xB = [mix xS @xE PHexBot]) (@yB = box.bottom) + corner (@xE = [box.xp p]) [slY @xB @yB @xE SlopeA] create-glyph "frak/r" 0x1D52F : glyph-proc local df : include : LowerDf 1 @@ -63,15 +63,15 @@ glyph-block LetterLike-Fraktur-Lower-F : begin local box : S.box XH 0 df.leftSB df.rightSB local rightHalfBox : box.withLeft [box.xp 0.375] - local rightStroke : include : fraktur-stroke S - corner rightHalfBox.right [post@slope SlopeB] - corner [rightHalfBox.xp PHexTop] rightHalfBox.top - straight.down.end rightHalfBox.left [pre@slope : 2 * SlopeA] - local leftStroke : include : fraktur-stroke S - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - [ccurl.sr SlopeB].start (post@ <-> 0.5 * DecoSizeX) box.top - flat rightHalfBox.left [rightStroke.last].y - RTBottom box (13/16) + local rightStroke : include : lift-@ : fraktur-stroke S + corner (@xR = rightHalfBox.right) [slY @xT @yT @xR SlopeB] + corner (@xT = [rightHalfBox.xp PHexTop]) (@yT = rightHalfBox.top) + straight.down.end (@xL = rightHalfBox.left) [slY @xT @yT @xL : 2 * SlopeA] + local leftStroke : include : lift-@ : fraktur-stroke S + corner (@xT - DecoSizeX) (@yT - DecoSizeY) + [ccurl.sr SlopeB].start (@xT = @xC - 0.5 * DecoSizeX) (@yT = box.top) + flat (@xC = rightHalfBox.left) (@yC = [rightStroke.last].y) + RTBottom @xC box (13/16) create-glyph "frak/t" 0x1D531 : glyph-proc local df : include : LowerDf 1 @@ -80,10 +80,10 @@ glyph-block LetterLike-Fraktur-Lower-F : begin local box : S.box Ascender 0 df.leftSB df.rightSB local xBox : T.box XH 0 df.leftSB df.rightSB - include : fraktur-stroke S - corner (post@ <+> DecoSizeX) box.top - corner (box.xMid - 0.5 * TBalance) (pre@ <-> DecoSizeY) - RTBottom box 0.875 + include : lift-@ : fraktur-stroke S + corner (@xC + DecoSizeX) (@yT = box.top) + corner (@xC = box.xMid - 0.5 * TBalance) (@yT - DecoSizeY) + RTBottom @xC box 0.875 include : fraktur-stroke F corner box.left xBox.top diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl index c45af873e4..2f2bef584e 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-hy.ptl @@ -1,5 +1,7 @@ $$include '../../meta/macros.ptl' +import [mix slY] from "@iosevka/util" + glyph-module glyph-block LetterLike-Fraktur-Lower-HY : begin @@ -9,17 +11,17 @@ glyph-block LetterLike-Fraktur-Lower-HY : begin glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot LTDecoration - define [LeftHalfShape mode box] : fraktur-stroke S + define [LeftHalfShape mode box] : lift-@ : fraktur-stroke S LTDecoration box.left box.top - corner box.left [post@slope SlopeB] - corner (post@ <-> DecoSizeX) box.bottom - corner box.xMid (pre@ <+> DecoSizeY) - - define [RightHalfShape mode box] : fraktur-stroke S - corner box.left [post@slope SlopeA] - [cg2.sr SlopeB].start [box.xp PHexTop] box.top - straight.down.mid box.right [pre@mix@post 0.5] - corner [box.xp PHexTop] box.bottom + corner (@xL = box.left) [slY @xB @yB @xL SlopeB] + corner (@xB = @xM - DecoSizeX) (@yB = box.bottom) + corner (@xM = box.xMid) (@yB + DecoSizeY) + + define [RightHalfShape mode box] : lift-@ : fraktur-stroke S + corner (@xL = box.left) [slY @xT @yT @xL SlopeA] + [cg2.sr SlopeB].start (@xT = [box.xp PHexTop]) (@yT = box.top) + straight.down.mid (@xR = box.right) box.yMid + corner [box.xp PHexTop] box.bottom create-glyph "frak/h" 0x1D525 : glyph-proc local df : include : LowerDf 1 diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl index f43049820a..0df71355f0 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-ijl.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix] from "@iosevka/util" +import [mix slY] from "@iosevka/util" glyph-module @@ -17,15 +17,15 @@ glyph-block LetterLike-Fraktur-Lower-IJL : begin create-glyph "frak/tittleAbove" : glyph-proc set-width 0 include : StdAnchors.narrow - include : spiro-outline - corner (markMiddle + [mix (-DotRadius) (+DotRadius) PHexBot]) (aboveMarkMid - DotRadius) - ~~~ [curl [pre@tang-out 1] [pre@tang-out SlopeA]] - # g2 (markMiddle + 0.5 * DotRadius) aboveMarkMid - ~~~ [flat [post@tang-out 1] [post@tang-out SlopeB]] - corner (markMiddle + [mix (-DotRadius) (+DotRadius) PHexTop]) (aboveMarkMid + DotRadius) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeA]] - # g2 (markMiddle - 0.5 * DotRadius) aboveMarkMid - ~~~ [flat [post@tang-in 1] [post@tang-in SlopeB]] + local xC markMiddle + local yC aboveMarkMid + include : lift-@ : spiro-outline + corner (@xB = xC + [mix (-DotRadius) (+DotRadius) PHexBot]) (@yB = yC - DotRadius) + ~~~ [curl (@xB + TINY) (@yB + SlopeA * TINY)] + ~~~ [flat (@xT + TINY) (@yT + SlopeB * TINY)] + corner (@xT = xC + [mix (-DotRadius) (+DotRadius) PHexTop]) (@yT = yC + DotRadius) + ~~~ [curl (@xT - TINY) (@yT - SlopeA * TINY)] + ~~~ [flat (@xB - TINY) (@yB - SlopeB * TINY)] close create-glyph "frak/dotlessi" : glyph-proc @@ -42,10 +42,10 @@ glyph-block LetterLike-Fraktur-Lower-IJL : begin include : df.markSet.p local box : S.box XH Descender df.leftSB df.rightSB - include : fraktur-stroke S - LTDecoration box.xMid box.top - corner pre@ [post@slope SlopeA] - corner box.left box.bot + include : lift-@ : fraktur-stroke S + LTDecoration (@xM = box.xMid) box.top + corner @xM [slY @xB @yB @xM SlopeA] + corner (@xB = box.left) (@yB = box.bot) CreateAccentedComposition 'frak/i' 0x1D526 'frak/dotlessi' 'frak/tittleAbove' CreateAccentedComposition 'frak/j' 0x1D527 'frak/dotlessj' 'frak/tittleAbove' diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl index a7e96b1bed..a54fe49b58 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-mnu.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix] from "@iosevka/util" +import [mix slY] from "@iosevka/util" glyph-module @@ -21,16 +21,16 @@ glyph-block LetterLike-Fraktur-Lower-MNU : begin include : fraktur-stroke M LTDecoration box.left box.top corner box.left box.bot - include : fraktur-stroke M - corner box.left [post@slope SlopeA] - corner [box.xp : mix 0 0.5 : mix 0.5 1 PHexTop] box.top - corner box.xMid [pre@slope SlopeB] - corner box.xMid box.bot - include : fraktur-stroke M - corner box.xMid [post@slope SlopeA] - corner [box.xp : mix 0.5 1 : mix 0.5 1 PHexTop] box.top - corner box.right [pre@slope SlopeB] - RBDecoration pre@ box.bot + include : lift-@ : fraktur-stroke M + corner (@xL = box.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [box.xp : mix 0 0.5 : mix 0.5 1 PHexTop]) (@yT = box.top) + corner (@xM = box.xMid) [slY @xT @yT @xM SlopeB] + corner @xM box.bot + include : lift-@ : fraktur-stroke M + corner (@xM = box.xMid) [slY @xT @yT @xM SlopeA] + corner (@xT = [box.xp : mix 0.5 1 : mix 0.5 1 PHexTop]) (@yT = box.top) + corner (@xR = box.right) [slY @xT @yT @xR SlopeB] + RBDecoration @xR box.bot create-glyph "frak/n" 0x1D52B : glyph-proc local df : include : LowerDf 1 @@ -40,22 +40,22 @@ glyph-block LetterLike-Fraktur-Lower-MNU : begin include : fraktur-stroke S LTDecoration box.left box.top corner box.left box.bot - include : fraktur-stroke S - corner box.left [post@slope SlopeA] - corner [box.xp : mix 0.5 1 PHexTop] box.top - corner box.right [pre@slope SlopeB] - RBDecoration pre@ box.bot + include : lift-@ : fraktur-stroke S + corner (@xL = box.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [box.xp : mix 0.5 1 PHexTop]) (@yT = box.top) + corner (@xR = box.right) [slY @xT @yT @xR SlopeB] + RBDecoration @xR box.bot create-glyph "frak/u" 0x1D532 : glyph-proc local df : include : LowerDf 1 include : df.markSet.e local box : S.box XH 0 df.leftSB df.rightSB - local leftStroke : include : fraktur-stroke S - LTDecoration box.left box.top - corner pre@ [post@slope SlopeB] - corner [box.xp PHexBot] box.bot - corner box.right [pre@slope SlopeA] + local leftStroke : include : lift-@ : fraktur-stroke S + LTDecoration @xL box.top + corner (@xL = box.left) [slY @xB @yB @xL SlopeB] + corner (@xB = [box.xp PHexBot]) (@yB = box.bot) + corner (@xR = box.right) [slY @xB @yB @xR SlopeA] include : fraktur-stroke S LTDecoration box.right box.top RBDecoration box.right box.bot [leftStroke.last].y diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl index ad016c8bba..a0392165dd 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-s.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix] from "@iosevka/util" +import [mix slY] from "@iosevka/util" glyph-module @@ -10,13 +10,13 @@ glyph-block LetterLike-Fraktur-Lower-S : begin glyph-block-import LetterLike-Fraktur-Common : LowerDf S M fraktur-stroke change-pen glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB FHook PHexTop - define [HalfS box] : fraktur-stroke S - corner box.right box.top - ~~~ [g2 [pre@mix@post 0.5] (pre@ <-> 0.5 * FHook)] - corner [box.xp : 0.5 * PHexTop] pre@ - ~~~ [g2.down.mid box.left [pre@mix@post 0.5]] - corner pre@ [post@slope SlopeA] - corner box.xMid box.yMid + define [HalfS box] : lift-@ : fraktur-stroke S + corner (@xR = box.right) (@yT = box.top) + g2 [mix @xR @xT 0.5] (@yT - 0.5 * FHook) + corner (@xT = [box.xp : 0.5 * PHexTop]) @yT + g2.down.mid box.left [mix @yT @yA 0.5] + corner @xT (@yA = [slY @xM @yM @xT SlopeA]) + corner (@xM = box.xMid) (@yM = box.yMid) create-glyph "frak/s" 0x1D530 : glyph-proc local df : include : LowerDf 1 diff --git a/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl b/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl index e695cac6d2..11dcc13c64 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/lower-z.ptl @@ -1,5 +1,7 @@ $$include '../../meta/macros.ptl' +import [mix slY] from "@iosevka/util" + glyph-module glyph-block LetterLike-Fraktur-Lower-Z : begin @@ -14,15 +16,15 @@ glyph-block LetterLike-Fraktur-Lower-Z : begin local box : S.box XH Descender df.leftSB df.rightSB - local upperLoop : include : fraktur-stroke S - corner box.left (post@ <+> DecoSizeY) - corner (box.left + DecoSizeX) [post@slope SlopeA] - [cg2.sr SlopeB].start [box.xp PHexTop] box.top - ~~~ [g2.down.mid box.right [pre@mix@post 0.45]] - [g2c.sl SlopeA].end [box.xp 0.375] [box.yp 0.55] + local upperLoop : include : lift-@ : fraktur-stroke S + corner (@xL = box.left) (@yL + DecoSizeY) + corner (@xL2 = @xL + DecoSizeX) (@yL = [slY @xT @yT @xL2 SlopeA]) + [cg2.sr SlopeB].start (@xT = [box.xp PHexTop]) (@yT = box.top) + g2.down.mid (@xR = box.right) [mix @yT @yC 0.45] + [g2c.sl SlopeA].end [box.xp 0.375] (@yC = [box.yp 0.55]) - local lowerLoop : include : fraktur-stroke S - [cg2.sr SlopeA].start [upperLoop.last].x [upperLoop.last].y - g2.down.mid (box.right - OX) [pre@mix@post 0.5] - hookend (sw -- S.thick) box.bottom - g2 box.left (pre@ <+> SHook) + local lowerLoop : include : lift-@ : fraktur-stroke S + [cg2.sr SlopeA].start [upperLoop.last].x (@yC = [upperLoop.last].y) + g2.down.mid (box.right - OX) [mix @yC @yB 0.5] + hookend (sw -- S.thick) (@yB = box.bottom) + g2 box.left (@yB + SHook) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl index d89a496b69..16b8b5ff1a 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-au.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -17,20 +17,20 @@ glyph-block LetterLike-Fraktur-Upper-A : begin local aBox : S.box CAP 0 df.leftSB df.rightSB - include : fraktur-stroke S - g2.ru.start (post@) ([aBox.yp 0.625] - 2 * F.thick) [change-pen F] + include : lift-@ : fraktur-stroke F + g2.ru.start @xL ([aBox.yp 0.625] - 2 * F.thick) ~~~ [Wave.vc Wave.DepthX] - g2.ru.mid aBox.left (post@ <-> DecoSizeY) [change-pen S] - arch.rhs (sw -- S.thick) (blendPre -- null) aBox.top 0.4 - straight.down.mid [aBox.xp 0.5] [pre@mix@post 0.375] - [flatc.sl SlopeA].end (aBox.left - 0.25 * DecoSizeX) [post@slope SlopeB] - corner [aBox.xp PHexBot] aBox.bot - corner aBox.right [pre@slope SlopeA] - - include : fraktur-stroke S - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - corner aBox.right aBox.top - RBDecoration pre@ aBox.bot + g2.ru.mid (@xL = aBox.left) (@yT - DecoSizeY) [change-pen S] + arch.rhs (sw -- S.thick) (blendPre -- null) (@yT = aBox.top) 0.4 + straight.down.mid [aBox.xp 0.5] [mix @yT @yA 0.375] + [flatc.sl SlopeA].end (@xA = @xL - 0.25 * DecoSizeX) (@yA = [slY @xB @yB @xA SlopeB]) + corner (@xB = [aBox.xp PHexBot]) (@yB = aBox.bot) + corner (@xR = aBox.right) [slY @xB @yB @xR SlopeA] + + include : lift-@ : fraktur-stroke S + corner (@x2 - DecoSizeX) (@y2 - DecoSizeY) + corner (@x2 = aBox.right) (@y2 = aBox.top) + RBDecoration @x2 aBox.bot create-glyph 'frak/U' 0x1D518 : glyph-proc local df : include : UpperDf 1 @@ -40,14 +40,14 @@ glyph-block LetterLike-Fraktur-Upper-A : begin local uDeco : uBox.padLeft (-0.25 * DecoSizeX) # top-left decoration ref box local uBody : uBox.padLeft (+1.50 * DecoSizeX) # body ref box - include : fraktur-stroke S - LTDecoration.g2 [mix uDeco.left uBody.left 0.5] uBody.top nothing - g2.down.mid uBody.left [pre@mix@post 0.45] - corner uDeco.left [post@slope SlopeB] - corner [uDeco.xp PHexBot] uDeco.bot - corner uDeco.right [pre@slope SlopeA] - - include : fraktur-stroke S - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - corner uDeco.right uDeco.top - RBDecoration pre@ uBox.bot + include : lift-@ : fraktur-stroke S + LTDecoration.g2 [mix uDeco.left uBody.left 0.5] (@yT = uBody.top) nothing + g2.down.mid uBody.left [mix @yT @yL 0.45] + corner (@xL = uDeco.left) (@yL = [slY @xB @yB @xL SlopeB]) + corner (@xB = [uDeco.xp PHexBot]) (@yB = uDeco.bot) + corner (@xR = uDeco.right) [slY @xB @yB @xR SlopeA] + + include : lift-@ : fraktur-stroke S + corner (@x2 - DecoSizeX) (@y2 - DecoSizeY) + corner (@x2 = uDeco.right) (@y2 = uDeco.top) + RBDecoration @x2 uBox.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-bpvw.ptl similarity index 51% rename from packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl rename to packages/font-glyphs/src/letter-like/fraktur/upper-bpvw.ptl index 8fa5ecd19f..74508181a6 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-bvw.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-bpvw.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -18,20 +18,20 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin define [StartStroke mode box profile pRight] : begin local { body deco } : deriveBoxes box - return : fraktur-stroke profile - g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-pen F] + return : lift-@ : fraktur-stroke profile + g2.ru.start @xL ([deco.yp 0.625] - 2 * F.thick) [change-pen F] ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen M] - arch.rhs (sw -- S.thick) (blendPre -- null) deco.top 0.4 + g2.ru.mid (@xL = deco.left) (@yT - DecoSizeY) [change-pen M] + arch.rhs (sw -- S.thick) (blendPre -- null) (@yT = deco.top) 0.4 match mode [Just "P"] : list - flat body.left [pre@mix@post 0.375] - virt pre@ body.bot - curl body.left Descender + flat (@xLB = body.left) [mix @yT @yB 0.375] + virt @xLB (@yB = body.bot) + curl @xLB Descender _ : list - straight.down.mid body.left [pre@mix@post 0.375] - corner deco.left [post@slope SlopeB] - virt [body.xp : pRight * PHexBot] body.bot + straight.down.mid @xLB [mix @yT @yLC 0.375] + corner @xL (@yLC = [slY @xE @yE @xL SlopeB]) + virt (@xE = [body.xp : pRight * PHexBot]) (@yE = body.bot) create-glyph 'frak/B' 0x1D505 : glyph-proc local df : include : UpperDf 1 @@ -45,14 +45,14 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin fraktur-stroke S corner [leftStroke.last].x [leftStroke.last].y corner [body.xp PHexBot] body.bot - decor@ : g2.up.mid (body.right - OX) [pre@mix@post 0.5] + ~~~ [g2.up.mid (body.right - OX) [body.yp 0.275]] corner [body.xp 0.625] [body.yp 0.55] - fraktur-stroke S - corner deco.left [post@slope SlopeA] - corner [body.xp PHexTop] body.top - decor@ : g2.down.mid body.right [pre@mix@post 0.5] - corner [body.xp 0.625] [body.yp 0.55] - corner deco.left [pre@slope : 0.5 * SlopeA] + lift-@ : fraktur-stroke S + corner (@xL = deco.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [body.xp PHexTop]) (@yT = body.top) + ~~~ [g2.down.mid body.right [body.yp 0.775]] + corner (@xM = [body.xp 0.625]) (@yM = [body.yp 0.55]) + corner @xL [slY @xM @yM @xL : 0.5 * SlopeA] create-glyph 'frak/P' 0x1D513 : glyph-proc local df : include : UpperDf 1 @@ -64,16 +64,16 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin local leftStroke : include : StartStroke "P" box S 1 local rightStroke : include : difference - fraktur-stroke S - g2 deco.left (post@ <+> Wave.DepthY) - ~~~ [g2 [deco.xp 0.21] (pre@ <+> Wave.DepthY)] - g2 [deco.xp 0.625] body.bottom + lift-@ : fraktur-stroke S + g2 deco.left (@yS = @yB + Wave.DepthY) + ~~~ [g2 [deco.xp 0.21] (@yS + Wave.DepthY)] + g2 [deco.xp 0.625] (@yB = body.bottom) ~~~ [Wave.vDistAfter : 1.5 * Wave.DepthX] - [g2c.sr SlopeA].end (body.right + 0.25 * DecoSizeX) ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> Wave.DepthX) [pre@mix@post 0.5] - arch.rhs (sw -- S.thick) (blendPre -- {}) body.top - corner (body.left - S.thick) (pre@ <-> ArchDepthA) + [g2c.sr SlopeA].end (@xR = body.right + 0.25 * DecoSizeX) (@yR = [body.yp 0.75] + S.thick) + ~~~ [curl (@xR - TINY) [@yR - SlopeB * TINY]] + g2 (@xR - Wave.DepthX) [mix @yR @yT 0.5] + arch.rhs (sw -- S.thick) (blendPre -- {}) (@yT = body.top) + corner (body.left - S.thick) (@yT - ArchDepthA) intersection [leftStroke.withPen CutMaskLeft] [MaskAbove body.yMid] create-glyph 'frak/V' 0x1D519 : glyph-proc @@ -84,15 +84,15 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin local { body deco } : deriveBoxes box local leftStroke : include : StartStroke 'V' box S 1 - include : with-knockout [leftStroke.withPen CutMaskLeft] : fraktur-stroke S + include : with-knockout [leftStroke.withPen CutMaskLeft] : lift-@ : fraktur-stroke S corner [leftStroke.last].x [leftStroke.last].y [cg2.sr SlopeA].start [body.xp PHexBot] body.bottom ~~~ [Wave.vDistAfter : 1.5 * Wave.DepthX] - [g2c.sr SlopeA].end (body.right + 0.25 * DecoSizeX) ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> Wave.DepthX) [pre@mix@post 0.5] - arch.rhs (sw -- S.thick) (blendPre -- {}) body.top - corner (body.left - S.thick) (pre@ <-> ArchDepthA) + [g2c.sr SlopeA].end (@xR = body.right + 0.25 * DecoSizeX) (@yR = [body.yp 0.75] + S.thick) + ~~~ [curl (@xR - TINY) [@yR - SlopeB * TINY]] + g2 (@xR - Wave.DepthX) [mix @yR @yT 0.5] + arch.rhs (sw -- S.thick) (blendPre -- {}) (@yT = body.top) + corner (body.left - S.thick) (@yT - ArchDepthA) create-glyph 'frak/W' 0x1D51A : glyph-proc local df : include : UpperDf para.diversityM 3 @@ -103,22 +103,22 @@ glyph-block LetterLike-Fraktur-Upper-BVW : begin local leftStroke : include : StartStroke 'W' box M 0.5 1 - local rightStroke : include : fraktur-stroke M + local rightStroke : include : lift-@ : fraktur-stroke M corner [leftStroke.last].x [leftStroke.last].y corner [deco.xp : 0.5 * PHexBot] box.bottom - corner deco.xMid [post@slope SlopeB] - [cg2.sr SlopeA].start [deco.xp : mix 0.5 1 PHexBot] body.bot + corner (@xM = deco.xMid) [slY @xB @yB @xM SlopeB] + [cg2.sr SlopeA].start (@xB = [deco.xp : mix 0.5 1 PHexBot]) (@yB = body.bot) ~~~ [Wave.vDistAfter : 0.75 * Wave.DepthX] - [g2c.sr SlopeA].end (body.right + 0.5 * DecoSizeX) ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> 0.75 * Wave.DepthX) [pre@mix@post 0.5] - arch.rhs (sw -- M.thick) (blendPre -- {}) body.top - corner body.xMid (body.top - 0.5 * Wave.DepthY) + [g2c.sr SlopeA].end (@xR = body.right + 0.5 * DecoSizeX) (@yR = [body.yp 0.75] + S.thick) + ~~~ [curl (@xR - TINY) [@yR - SlopeB * TINY]] + g2 (@xR - 0.75 * Wave.DepthX) [mix @yR @yT 0.5] + arch.rhs (sw -- M.thick) (blendPre -- {}) (@yT = body.top) + corner body.xMid (@yE = @yT - 0.5 * Wave.DepthY) ~~~ [arch.rhs (sw -- M.thick) (blendPre -- {}) (blendPost -- {}) body.top] - corner body.left pre@ + corner body.left @yE - local middleStroke : include : fraktur-stroke M - virt [deco.xp : mix 0.5 1 PHexBot] body.bot - corner deco.xMid [pre@slope SlopeB] + local middleStroke : include : lift-@ : fraktur-stroke M + virt (@xT = [deco.xp : mix 0.5 1 PHexBot]) (@yT = body.bot) + corner (@xM = deco.xMid) [slY @xT @yT @xM SlopeB] ~~~ [Wave.vDistAfter : 0.375 * Wave.DepthX] corner body.xMid (body.top - 0.5 * Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl index 5b5c8e3a96..6c94020e37 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ceg.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -24,17 +24,17 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin local waveTop : top - deco # Top-right stroke - include : fraktur-stroke S - g2 right top - g2.left.mid [pre@mix@post 0.5] (top - 0.5 * FHook) - corner (post@ <+> deco) top - corner xCenter (top - deco) + include : lift-@ : fraktur-stroke S + g2 right top + g2.left.mid [mix right @xP 0.5] (top - 0.5 * FHook) + corner (@xP = @xC + deco) top + corner (@xC = xCenter) (top - deco) # Inner decoration - include : fraktur-stroke F - g2.ld.start [F.connL S xCenter] [F.connB S : top - deco] + include : lift-@ : fraktur-stroke F + g2.ld.start (@xS = [F.connL S xCenter]) [F.connB S : top - deco] ~~~ [Wave.vc (-Wave.DepthX)] - g2.ld.end pre@ bot + g2.ld.end @xS bot return : object xCenter [waveTop : top - deco] [waveBot bot] @@ -50,22 +50,22 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin bot -- ([mix bot top 0.1] + 2 * Wave.DepthY + 0.5 * S.thick) # Left and bottom stroke - include : fraktur-stroke S + include : lift-@ : fraktur-stroke S g4.ru.start [T.connL S xCenter] [T.connB S waveTop] [change-pen T] - arch.rhs [T.connT S top] (sw -- T.thick) (anglePre -- (-45)) (anglePost -- 0) - flat left (pre@ <-> 0.6 * ArchDepthA) [change-pen S] - curl pre@ (post@ <+> ArchDepthB) + arch.rhs (@yT = [T.connT S top]) (sw -- T.thick) (anglePre -- (-45)) (anglePost -- 0) + flat left (@yT - 0.6 * ArchDepthA) [change-pen S] + curl left (bot + ArchDepthB) match mode : [Just 'C'] : list # C and E - hookend (sw -- S.thick) bot - g2 [T.connR S right] (pre@ <+> [T.connT S SHook]) [change-pen T] + hookend (sw -- S.thick) bot + g2 [T.connR S right] (bot + [T.connT S SHook]) [change-pen T] : [Just 'G'] : list # G - arch.lhs (sw -- S.thick) bot - flat right (pre@ <+> ArchDepthA) - decor@ : curl pre@ (post@ <-> 0.5 * ArchDepthB) - decor@@ : g2 [post@tang-out 1] [post@tang-out SlopeB] - decor@ : corner [post@mix@pre PHexTop] [post@slope SlopeA] - decor@ : corner xCenter [mix waveTop waveBot 0.5] + arch.lhs (sw -- S.thick) bot + flat right (bot + ArchDepthA) + curl right (@yMT - 0.5 * ArchDepthB) + g2 (@xMT + TINY) (@yMT + TINY * SlopeB) + corner (@xMT = [mix @xM right PHexTop]) (@yMT = [slY @xM @yM @xMT SlopeA]) + corner (@xM = xCenter) (@yM = [mix waveTop waveBot 0.5]) return : object xCenter waveTop waveBot @@ -81,10 +81,10 @@ glyph-block LetterLike-Fraktur-Upper-CEG : begin local [object xCenter waveTop waveBot] : include : FrakCOutlineShape df (mode -- 'C') - include : fraktur-stroke F - corner [F.connL S xCenter] [F.connB S : mix waveTop waveBot 0.5] - corner (post@ <-> 0.5 * DecoSizeX) [pre@slope SlopeA] - corner [F.xr df.rightSB] (pre@ <-> 0.5 * DecoSizeY) + include : lift-@ : fraktur-stroke F + corner (@xM = [F.connL S xCenter]) (@yM = [F.connB S : mix waveTop waveBot 0.5]) + corner (@xRM = @xR - 0.5 * DecoSizeX) (@yRM = [slY @xM @yM @xRM SlopeA]) + corner (@xR = [F.xr df.rightSB]) (@yRM - 0.5 * DecoSizeY) create-glyph "frak/G" 0x1D50A : glyph-proc local df : include : UpperDf 1 diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl index db5aad4ea0..65a5cb9f28 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-doq.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -16,37 +16,37 @@ glyph-block LetterLike-Fraktur-DOQ : begin include : df.markSet.capital local box : S.box CAP 0 df.leftSB df.rightSB - local frame : include : fraktur-stroke S - cg2.ru.start (box.left - 0.25 * DecoSizeX) box.bottom - ~~~ [g2.right.mid [pre@mix@post (1/3)] (pre@ <+> Wave.DepthY - O)] - g2 [box.xp 0.625] (pre@ <+> O) - ~~~ ~~~ ~~~ [archv] - ~~~ ~~~ [straight.up.mid (box.right - OX) [box.yp 0.5]] - ~~~ ~~~ [arch.lhs (sw -- S.thick) (blendPost -- {}) box.top] - corner [T.connL S : box.left - 0.5 * DecoSizeX] [T.connB S : box.top - FHook] [change-pen T] + local frame : include : lift-@ : fraktur-stroke S + cg2.ru.start (@xLB = box.left - 0.25 * DecoSizeX) (@yB = box.bottom) + ~~~ [g2.right.mid [mix @xLB @xB (1/3)] (@yB + Wave.DepthY - O)] + g2 (@xB = [box.xp 0.625]) (@yB + O) + ~~~ [archv] + straight.up.mid (box.right - OX) [box.yp 0.5] + arch.lhs (sw -- S.thick) (blendPost -- {}) (@yT = box.top) + corner [T.connL S : @xLB - 0.25 * DecoSizeX] [T.connB S : @yT - FHook] [change-pen T] local inner : include : intersection union intersection [MaskAbove : box.yMid - TINY] [frame.withPen CutMaskDown] intersection [MaskBelow : box.yMid + TINY] [frame.withPen CutMaskUp] - fraktur-stroke S - corner [frame.first 2].x [frame.first 2].y + lift-@ : fraktur-stroke S + corner (@xS = [frame.first 2].x) [frame.first 2].y ~~~ [Wave.vc (0.75 * Wave.DepthX)] - corner pre@ (box.top - 0.25 * SHook) - corner pre@ box.top + corner @xS (box.top - 0.25 * SHook) + corner @xS box.top - define [FrakOShape box] : fraktur-stroke S - cg2.ru.start (box.left - 0.25 * DecoSizeX) box.bottom - ~~~ [g2.right.mid [pre@mix@post (1/3)] (pre@ <+> Wave.DepthY - O)] - g2 [box.xp 0.625] (pre@ <+> O) - ~~~ ~~~ ~~~ [archv] - ~~~ ~~~ [straight.up.mid (box.right - OX) [box.yp 0.5]] - ~~~ ~~~ [arch.lhs (sw -- S.thick) (blendPost -- {}) box.top] - ~~~ ~~~ [corner [box.xp 0.25] (box.top - FHook)] - ~~~ ~~~ [corner (pre@ <-> DecoSizeX) (pre@ <+> DecoSizeY)] - ~~~ ~~~ ~~~ [Wave.vc (0.75 * -Wave.DepthX)] - ~~~ [corner [post@mix@pre (1/3)] (post@ <+> Wave.DepthY - O)] + define [FrakOShape box] : lift-@ : fraktur-stroke S + cg2.ru.start (@xLB = box.left - 0.25 * DecoSizeX) (@yB = box.bottom) + ~~~ [g2.right.mid (@xLB2 = [mix @xLB @xB (1/3)]) (@yLB2 = @yB + Wave.DepthY - O)] + g2 (@xB = [box.xp 0.625]) (@yB + O) + ~~~ [archv] + straight.up.mid (box.right - OX) [box.yp 0.5] + arch.lhs (sw -- S.thick) (blendPost -- {}) (@yT = box.top) + ~~~ [corner (@xTI = [box.xp 0.25]) (@yTI = @yT - FHook)] + corner (@xTL = @xTI - DecoSizeX) (@yTI + DecoSizeY) + ~~~ [Wave.vc (0.75 * -Wave.DepthX)] + corner @xLB2 @yLB2 create-glyph "frak/O" 0x1D512 : glyph-proc local df : include : UpperDf 1 @@ -62,7 +62,7 @@ glyph-block LetterLike-Fraktur-DOQ : begin local box : S.box CAP 0 df.leftSB df.rightSB local frame : include : FrakOShape box - include : with-knockout [frame.withPen CutMaskUp] : fraktur-stroke S - corner (post@ <+> DecoSizeX) (post@ <+> DecoSizeY) - corner (box.right + O) (box.bottom + O) - corner (pre@ <-> 2 * DecoSizeX) [pre@slope SlopeB] + include : with-knockout [frame.withPen CutMaskUp] : lift-@ : fraktur-stroke S + corner (@xR + DecoSizeX) (@yR + DecoSizeY) + corner (@xR = box.right + O) (@yR = box.bottom + O) + corner (@xL = @xR - 2 * DecoSizeX) [slY @xR @yR @xL SlopeB] diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl index 8b0e3c59cc..a7464059f3 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ft.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -16,35 +16,35 @@ glyph-block LetterLike-Fraktur-Upper-F : begin include : df.markSet.capital local fBox : S.box CAP 0 df.leftSB df.rightSB - local topStroke : include : fraktur-stroke S - g2.ld.start fBox.right fBox.top + local topStroke : include : lift-@ : fraktur-stroke S + g2.ld.start (@xR = fBox.right) (@yT = fBox.top) ~~~ [Wave.h O] - g2.ld.end fBox.left (pre@ <-> Wave.DepthY) [change-pen F] + g2.ld.end (@xL = fBox.left) (@yT - Wave.DepthY) [change-pen F] ~~~ [Wave.vc (-Wave.DepthX)] - g2.ld.end pre@ ([fBox.yp 0.625] - 2 * F.thick) + g2.ld.end @xL ([fBox.yp 0.625] - 2 * F.thick) - local mainStroke : include : fraktur-stroke S + local mainStroke : include : lift-@ : fraktur-stroke S [g2.sl (2 * SlopeA)].start fBox.xMid (fBox.top - 0.5 * Wave.DepthY) - g2 [fBox.xp 0.875] (post@ <+> ArchDepthB) - hookend (sw -- S.thick) fBox.bot - g2 fBox.left (pre@ <+> SHook) + g2 [fBox.xp 0.875] (@yB + ArchDepthB) + hookend (sw -- S.thick) (@yB = fBox.bot) + g2 fBox.left (@yB + SHook) - include : with-knockout [mainStroke.withPen CutMaskLeft] : fraktur-stroke F - corner [F.connR S fBox.right] [post@slope SlopeB] - corner (fBox.right - 0.5 * DecoSizeX) [post@slope SlopeA] - corner fBox.xMid [mix (fBox.top - 0.5 * Wave.DepthY) (fBox.bot + ArchDepthB) 0.5] + include : with-knockout [mainStroke.withPen CutMaskLeft] : lift-@ : fraktur-stroke F + corner (@xR = [F.connR S fBox.right]) [slY @xMR @yMR @xR SlopeB] + corner (@xMR = fBox.right - 0.5 * DecoSizeX) (@yMR = [slY @xM @yM @xMR SlopeA]) + corner (@xM = fBox.xMid) (@yM = [mix (fBox.top - 0.5 * Wave.DepthY) (fBox.bot + ArchDepthB) 0.5]) create-glyph "frak/T" 0x1D517 : glyph-proc local df : include : UpperDf 1 include : df.markSet.capital local tBox : S.box CAP 0 df.leftSB df.rightSB - local topStroke : include : fraktur-stroke S - g2.ld.start tBox.right tBox.top + local topStroke : include : lift-@ : fraktur-stroke S + g2.ld.start tBox.right (@yT = tBox.top) ~~~ [Wave.h O] - g2.ld.end tBox.left (pre@ <-> Wave.DepthY) [change-pen F] + g2.ld.end (@xL = tBox.left) (@yT - Wave.DepthY) [change-pen F] ~~~ [Wave.vc (-Wave.DepthX)] - g2.ld.end pre@ ([tBox.yp 0.625] - 2 * F.thick) + g2.ld.end @xL ([tBox.yp 0.625] - 2 * F.thick) local bottomStroke : include : fraktur-stroke S g2.ld.end tBox.right (tBox.bottom + Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl index 2146a30bda..38fcba1a63 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-hkry.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix min max fallback slY] from "@iosevka/util" glyph-module @@ -11,36 +11,36 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot - define [HOuterShape bBody bDeco yConnT yConnB] : fraktur-stroke S - g2 bBody.right (post@ <-> FHook) - arch.lhs bBody.top (sw -- S.thick) (blendPre -- {}) - ~~~ [corner (post@ <-> 0.5 * DecoSizeX) [post@slope SlopeB]] - corner bBody.left [max@ yConnT (pre@ <-> 0.75 * ArchDepthA)] - curl pre@ [min@ yConnB (post@ <+> ArchDepthA)] - corner bDeco.left (post@ <+> 2 * DecoSizeY) - g2c.r.end (post@ <-> DecoSizeX) bBody.bot - corner bBody.xMid (pre@ <+> DecoSizeY) + define [HOuterShape bBody bDeco yConnT yConnB] : lift-@ : fraktur-stroke S + g2 bBody.right (@yT - FHook) + arch.lhs (sw -- S.thick) (blendPre -- {}) (@yT = bBody.top) + corner (@xLD = @xL - 0.5 * DecoSizeX) [slY @xL @yL @xLD SlopeB] + corner (@xL = bBody.left) (@yL = [max yConnT (@yT - 0.75 * ArchDepthA)]) + curl @xL [min yConnB (@yBD + ArchDepthA)] + corner bDeco.left (@yBD = @yB + 2 * DecoSizeY) + g2c.r.end (@xM - DecoSizeX) (@yB = bBody.bot) + corner (@xM = bBody.xMid) (@yB + DecoSizeY) define [KRLegs box] : glyph-proc # Top-right arch - local c : include : fraktur-stroke S - flat box.left [post@slope SlopeA] - corner [box.xp PHexTop] box.top - g2.down.mid box.right [pre@mix@post 0.5] - flat [box.xp 0.625] [box.yp 0.55] - curl box.left [pre@slope SlopeA] + local c : include : lift-@ : fraktur-stroke S + flat (@xL = box.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [box.xp PHexTop]) (@yT = box.top) + g2.down.mid box.right [mix @yT @yRB 0.5] + flat (@xRB = [box.xp 0.625]) (@yRB = [box.yp 0.55]) + curl @xL [slY @xRB @yRB @xL SlopeA] local xLegStart : mix [c.last 1].x [c.last 2].x 0.75 local yLegStart : mix [c.last 1].y [c.last 2].y 0.75 # Leg - include : fraktur-stroke S - [g2.sr SlopeA].start xLegStart yLegStart - flat [pre@mix@post 0.75] (pre@ <-> 0.6 * ArchDepthB) - decor@ : curl pre@ (post@ <+> 2 * DecoSizeY) - corner (box.right + 0.5 * DecoSizeX) box.bot - corner (pre@ <+> DecoSizeX) (pre@ <+> DecoSizeY) + include : lift-@ : fraktur-stroke S + [g2.sr SlopeA].start (@xS = xLegStart) (@yS = yLegStart) + flat (@xM = [mix @xS @xB 0.75]) (@yS - 0.6 * ArchDepthB) + ~~~ [ curl @xM (@yB + 2 * DecoSizeY) ] + corner (@xB = box.right + 0.5 * DecoSizeX) (@yB = box.bot) + corner (@xB + DecoSizeX) (@yB + DecoSizeY) return : object [yConnT [c.first].y] [yConnB [c.last].y] @@ -54,9 +54,9 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin local hInner : [hBody.withTop : hBody.yp 0.6].withBottom Descender # Inner stroke - local c : include : fraktur-stroke S - corner hInner.left [post@slope SlopeA] - corner [hInner.xp PHexTop] hInner.top + local c : include : lift-@ : fraktur-stroke S + corner (@xL = hInner.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [hInner.xp PHexTop]) (@yT = hInner.top) g2.down.mid hInner.right [hInner.yp 0.75] ~~~ [alsoThru.g2 0.5 0.5] g2.down.mid [hInner.xp 0.75] [hInner.yp 0.25] @@ -79,16 +79,16 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin include : HOuterShape kBody kDeco leg.yConnT leg.yConnB define [RKLeftStroke deco body yConnB pRight] : glyph-proc - local s : include : fraktur-stroke F - g2.ru.start post@ ([deco.yp 0.625] - 2 * F.thick) + local s : include : lift-@ : fraktur-stroke F + g2.ru.start @xdL ([deco.yp 0.625] - 2 * F.thick) ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen S] - arch.rhs (blendPre -- {}) body.top 0.625 - flat body.left (body.top - 0.6 * ArchDepthA) - curl (pre@ <+> 0) [min@ yConnB [pre@mix@post 0.5]] - corner deco.left (post@ <+> 2 * DecoSizeY) - g2c.right.end (post@ <-> DecoSizeX) [S.yb 0] - corner [body.xp : 0.5 * pRight] (pre@ <+> DecoSizeY) + g2.ru.mid (@xdL = deco.left) (@yT - DecoSizeY) [change-pen S] + arch.rhs (blendPre -- {}) (@yT = body.top) 0.625 + flat (@xbL = body.left) (@ybT = body.top - 0.6 * ArchDepthA) + curl @xbL [min yConnB [mix @ybT @ybB 0.5]] + corner @xdL (@ybB = @yB + 2 * DecoSizeY) + g2c.right.end (@xR - DecoSizeX) (@yB = [S.yb 0]) + corner (@xR = [body.xp : 0.5 * pRight]) (@yB + DecoSizeY) return s create-glyph "frak/R" 0x211C : glyph-proc @@ -114,9 +114,9 @@ glyph-block LetterLike-Fraktur-Upper-HKR : begin local leftStroke : include : RKLeftStroke yDeco yBody yBody.top 0.75 local yRight : yBody.withBottom Descender - local rightStroke : include : fraktur-stroke S - corner yRight.left [post@slope SlopeA] - corner [yRight.xp PHexTop] yRight.top + local rightStroke : include : lift-@ : fraktur-stroke S + corner (@xL = yRight.left) [slY @xT @yT @xL SlopeA] + corner (@xT = [yRight.xp PHexTop]) (@yT = yRight.top) g2.down.mid yRight.right [yRight.yp 0.75] g2.down.mid [yRight.xp 0.75] [yRight.yp 0.25] g2 yRight.right yRight.bot diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl index 6028db8987..9897ea24db 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-ij.ptl @@ -11,25 +11,25 @@ glyph-block LetterLike-Fraktur-Upper-IJ : begin define [TopStroke df] : glyph-proc local iBox : S.box CAP 0 df.leftSB df.rightSB - include : fraktur-stroke S - g2.ld.start iBox.right iBox.top + include : lift-@ : fraktur-stroke S + g2.ld.start iBox.right (@yT = iBox.top) ~~~ [Wave.h O] - g2.ld.end iBox.left (pre@ <-> Wave.DepthY) [change-pen F] + g2.ld.end (@xL = iBox.left) (@yT - Wave.DepthY) [change-pen F] ~~~ [Wave.vc (-Wave.DepthX)] - g2.ld.end pre@ ([iBox.yp 0.625] - 2 * F.thick) + g2.ld.end @xL ([iBox.yp 0.625] - 2 * F.thick) define [BottomStroke df bot archScalar] : glyph-proc local gap : 2.5 * Wave.DepthY + 1 * S.thick local jBox : S.box [S.yt (CAP - gap)] bot df.leftSB df.rightSB local ada1 : 0.6 * archScalar * ArchDepthA local ada2 : archScalar * ArchDepthA - include : fraktur-stroke S - g4 [T.connR S jBox.right] (post@ <-> FHook) [change-pen T] - hookstart (sw -- S.thick) [T.connT S jBox.top] + include : lift-@ : fraktur-stroke S + g4 [T.connR S jBox.right] (@yT - FHook) [change-pen T] + hookstart (sw -- S.thick) (@yT = [T.connT S jBox.top]) g4 ([jBox.xp 0.6] - S.thick) (jBox.top - ada1) [change-pen S] g4 (jBox.right - OX) (jBox.bot + ada2) - hookend (sw -- S.thick) jBox.bot - g2 jBox.left (pre@ <+> SHook) + hookend (sw -- S.thick) (@yB = jBox.bot) + g2 jBox.left (@yB + SHook) create-glyph "frak/I" 0x2111 : glyph-proc local df : include : UpperDf 1 diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl index 752119097b..9da12a339e 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-l.ptl @@ -16,12 +16,12 @@ glyph-block LetterLike-Fraktur-Upper-L : begin include : df.markSet.capital local lBox : S.box CAP 0 df.leftSB df.rightSB - include : fraktur-stroke S - g2 lBox.right (post@ <-> SHook) - hookstart (sw -- S.thick) lBox.top - g2 [lBox.xp 0.125] (pre@ <-> ArchDepthA) - ~~~ [g2.down.mid (pre@ <+> 1.5 * Wave.DepthX) [pre@mix@post 0.5]] - g2c.ld.end lBox.left lBox.bottom - ~~~ [g2 [pre@tang-out 1] [pre@tang-out 1]] + include : lift-@ : fraktur-stroke S + g2 lBox.right (@yT - SHook) + hookstart (sw -- S.thick) (@yT = lBox.top) + g2 (@xLT = [lBox.xp 0.125]) (@yLT = @yT - ArchDepthA) + ~~~ [g2.down.mid (@xLT + 1.5 * Wave.DepthX) [mix @yLT @yB 0.5]] + g2c.ld.end (@xB = lBox.left) (@yB = lBox.bottom) + ~~~ [g2 (@xB + TINY) (@yB + TINY)] ~~~ ~~~ [Wave.h (-O)] - g2c.ru.end (lBox.right + 0.25 * DecoSizeX) (pre@ <+> Wave.DepthY) + g2c.ru.end (lBox.right + 0.25 * DecoSizeX) (@yB + Wave.DepthY) diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-mn.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-mn.ptl new file mode 100644 index 0000000000..feb1096522 --- /dev/null +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-mn.ptl @@ -0,0 +1,85 @@ +$$include '../../meta/macros.ptl' + +import [mix fallback] from "@iosevka/util" + +glyph-module + +glyph-block LetterLike-Fraktur-Upper-MNP : begin + glyph-block-import Common-Derivatives + glyph-block-import CommonShapes + glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen + glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft + glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot + + define [deriveBoxes box] : begin + local body : box.padLeft (+1.50 * DecoSizeX) + local deco : box.padLeft (-0.25 * DecoSizeX) + return { body deco } + + define [LeftStroke box profile] : glyph-proc + local { body deco } : deriveBoxes box + + local [knots] : lift-@ : list + g2.ru.start @xLD ([deco.yp 0.625] - 2 * F.thick) [change-pen F] + ~~~ [Wave.vc Wave.LTDecoSize] + g2.ru.mid (@xLD = deco.left) (@yT - DecoSizeY) [change-pen profile] + arch.rhs (sw -- profile.thick) (blendPre -- null) (@yT = deco.top) 0.4 + flat (@xLB = body.left) (@yT - ArchDepthA) + curl @xLB (@yB + ArchDepthB) + corner (@xB = @xLD + 0.5 * DecoSizeX) (@yB = deco.bot) + corner (@xB - DecoSizeX) (@yB + DecoSizeY) + + local s : include : fraktur-stroke profile [knots] + + return : object + maskLeft : function [] : fraktur-stroke CutMaskLeft [knots] + + + create-glyph 'frak/M' 0x1D510 : glyph-proc + local df : include : UpperDf para.diversityM 3 + include : df.markSet.capital + + local box : M.box CAP 0 df.leftSB df.rightSB + local { body deco } : deriveBoxes box + + local leftStroke : include : LeftStroke box M + + local rightStroke : include : lift-@ : fraktur-stroke M + corner (@xR + DecoSizeX) (@yR + DecoSizeY) + corner (@xR = body.right + 0.25 * DecoSizeX) (@yR = body.bottom) + ~~~ [straight.up.mid (@xR - Wave.DepthX) [mix @yR @yRT 0.5]] + corner (@xRT = @xR + 0.25 * DecoSizeX) (@yRT = [body.yp 0.75] + S.thick) + ~~~ [curl (@xRT - TINY) (@yRT - TINY * SlopeB)] + g2 (@xRT - 0.75 * Wave.DepthX) [mix @yRT @yT 0.5] + arch.rhs (sw -- M.thick) (blendPre -- {}) (@yT = body.top) + corner (body.xMid - 0.25 * Wave.DepthX) (@yMT = @yT - 0.5 * Wave.DepthY) + ~~~ [arch.rhs (sw -- M.thick) (blendPre -- {}) (blendPost -- {}) @yT] + corner body.left @yMT + + local middleStroke : include : lift-@ : fraktur-stroke M + corner (@xMB - DecoSizeX) (@yB + DecoSizeY) + corner (@xMB = deco.xMid) (@yB = deco.bot) + flat @xMT [mix @yB @yMTS 0.5] + flat @xMT (@yMTS = [body.yp 0.75] + S.thick) + curl (@xMT = body.xMid - 0.25 * Wave.DepthX) (body.top - 0.5 * Wave.DepthY) + + create-glyph 'frak/N' 0x1D511 : glyph-proc + local df : include : UpperDf 1 + include : df.markSet.capital + + local box : S.box CAP 0 df.leftSB df.rightSB + local { body deco } : deriveBoxes box + + local leftStroke : include : LeftStroke box S + + local rightStroke : include : lift-@ : difference + fraktur-stroke S + corner (@xR + DecoSizeX) (@yR + DecoSizeY) + corner (@xR = body.right + 0.25 * DecoSizeX) (@yR = body.bottom) + ~~~ [straight.up.mid (@xR - Wave.DepthX) [mix @yR @yRT 0.5]] + corner @xR (@yRT = [body.yp 0.75] + S.thick) + ~~~ [curl (@xR - TINY) (@yRT - TINY * SlopeB)] + g2 (@xR - Wave.DepthX) [mix @yRT @yT 0.5] + arch.rhs (sw -- S.thick) (blendPre -- {}) (@yT = body.top) + corner (body.left - S.thick) (@yT - ArchDepthA) + leftStroke.maskLeft diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl deleted file mode 100644 index c420744ad9..0000000000 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-mnp.ptl +++ /dev/null @@ -1,86 +0,0 @@ -$$include '../../meta/macros.ptl' - -import [mix fallback] from "@iosevka/util" - -glyph-module - -glyph-block LetterLike-Fraktur-Upper-MNP : begin - glyph-block-import Common-Derivatives - glyph-block-import CommonShapes - glyph-block-import LetterLike-Fraktur-Common : UpperDf S M F T fraktur-stroke change-pen - glyph-block-import LetterLike-Fraktur-Common : DecoSizeX DecoSizeY SlopeA SlopeB CutMaskLeft - glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot - - define [deriveBoxes box] : begin - local body : box.padLeft (+1.50 * DecoSizeX) - local deco : box.padLeft (-0.25 * DecoSizeX) - return { body deco } - - define [LeftStroke box profile] : glyph-proc - local { body deco } : deriveBoxes box - - local [knots] : list - g2.ru.start (post@) ([deco.yp 0.625] - 2 * F.thick) [change-pen F] - ~~~ [Wave.vc Wave.LTDecoSize] - g2.ru.mid deco.left (post@ <-> DecoSizeY) [change-pen profile] - arch.rhs (sw -- profile.thick) (blendPre -- null) deco.top 0.4 - flat body.left (pre@ <-> ArchDepthA) - curl pre@ (post@ <+> ArchDepthB) - corner (deco.left + 0.5 * DecoSizeX) deco.bot - corner (pre@ <-> DecoSizeX) (pre@ <+> DecoSizeY) - - local s : include : fraktur-stroke profile [knots] - - return : object - maskLeft : function [] : fraktur-stroke CutMaskLeft [knots] - - - create-glyph 'frak/M' 0x1D510 : glyph-proc - local df : include : UpperDf para.diversityM 3 - include : df.markSet.capital - - local box : M.box CAP 0 df.leftSB df.rightSB - local { body deco } : deriveBoxes box - - local leftStroke : include : LeftStroke box M - - local rightStroke : include : fraktur-stroke M - corner (post@ <+> DecoSizeX) (post@ <+> DecoSizeY) - corner (body.right + 0.25 * DecoSizeX) body.bottom - ~~~ [straight.up.mid (pre@ <-> Wave.DepthX) [pre@mix@post 0.5]] - corner (pre@ <+> 0.25 * DecoSizeX) ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> 0.75 * Wave.DepthX) [pre@mix@post 0.5] - arch.rhs (sw -- M.thick) (blendPre -- {}) body.top - corner (body.xMid - 0.25 * Wave.DepthX) (body.top - 0.5 * Wave.DepthY) - ~~~ [arch.rhs (sw -- M.thick) (blendPre -- {}) (blendPost -- {}) body.top] - corner body.left pre@ - - local middleStroke : include : fraktur-stroke M - corner (post@ <-> DecoSizeX) (post@ <+> DecoSizeY) - corner deco.xMid deco.bot - flat post@ [pre@mix@post 0.5] - # flat post@ (pre@ <+> ArchDepthB) - flat post@ ([body.yp 0.75] + S.thick) - curl (body.xMid - 0.25 * Wave.DepthX) (body.top - 0.5 * Wave.DepthY) - - create-glyph 'frak/N' 0x1D511 : glyph-proc - local df : include : UpperDf 1 - include : df.markSet.capital - - local box : S.box CAP 0 df.leftSB df.rightSB - local { body deco } : deriveBoxes box - - local leftStroke : include : LeftStroke box S - - local rightStroke : include : difference - fraktur-stroke S - corner (post@ <+> DecoSizeX) (post@ <+> DecoSizeY) - corner (body.right + 0.25 * DecoSizeX) body.bottom - ~~~ [straight.up.mid (pre@ <-> Wave.DepthX) [pre@mix@post 0.5]] - corner pre@ ([body.yp 0.75] + S.thick) - ~~~ [curl [pre@tang-in 1] [pre@tang-in SlopeB]] - g2 (pre@ <-> Wave.DepthX) [pre@mix@post 0.5] - arch.rhs (sw -- S.thick) (blendPre -- {}) body.top - corner (body.left - S.thick) (pre@ <-> ArchDepthA) - leftStroke.maskLeft diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl index e237195e0e..e46df5a281 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-s.ptl @@ -17,16 +17,16 @@ glyph-block LetterLike-Fraktur-S : begin local box : S.box CAP 0 df.leftSB df.rightSB - include : fraktur-stroke S - g2.ld.start box.right box.top - ~~~ [g2.left.mid [pre@mix@post : 1/3] (pre@ <-> 0.75 * Wave.DepthY - O)] - g2.left.mid [box.xp 0.375] (pre@ <-> O) + include : lift-@ : fraktur-stroke S + g2.ld.start (@xR = box.right) (@yT = box.top) + ~~~ [g2.left.mid [mix @xR @xT : 1/3] (@yT - 0.75 * Wave.DepthY - O)] + g2.left.mid (@xT = [box.xp 0.375]) (@yT - O) ~~~ [archv] - flat box.left (box.top - SmallArchDepthA * (CAP / XH)) - curl box.left (box.bot + SmallArchDepthB * (CAP / XH)) - ~~~ [arch.lhs (sw -- S.thick) box.bottom] - ~~~ [g2.up.mid (box.right - OX) [pre@mix@post 0.5]] - ~~~ ~~~ [arcvh] - ~~~ [g2.left.mid [box.xp 0.625] (box.yMid + 0.25 * Wave.DepthY - O)] - ~~~ ~~~ [g2.left.mid [box.xp 0.3] (box.yMid - 0.25 * Wave.DepthY + O) [change-pen T]] - ~~~ [g2 [box.xp 0.125] pre@] + flat (@xL = box.left) (@yT - SmallArchDepthA * (CAP / XH)) + curl @xL (@yB + SmallArchDepthB * (CAP / XH)) + arch.lhs (sw -- S.thick) (@yB = box.bottom) + g2.up.mid (@xR - OX) [mix @yB @yMT 0.5] + ~~~ [arcvh] + g2.left.mid [box.xp 0.625] (@yMT = box.yMid + 0.25 * Wave.DepthY - O) + ~~~ [g2.left.mid [box.xp 0.3] (box.yMid - 0.25 * Wave.DepthY + O) [change-pen T]] + g2 [box.xp 0.125] @yMT diff --git a/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl b/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl index 98773e1ede..b2d04bddea 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/upper-z.ptl @@ -16,10 +16,10 @@ glyph-block LetterLike-Fraktur-Upper-Z : begin local zBox : S.box CAP 0 df.leftSB df.rightSB # Top Stroke - include : fraktur-stroke S - g2.ld.start zBox.right zBox.top + include : lift-@ : fraktur-stroke S + g2.ld.start zBox.right (@yT = zBox.top) ~~~ [Wave.h O] - g2.ld.mid zBox.left (pre@ <-> Wave.DepthY) + g2.ld.mid zBox.left (@yT - Wave.DepthY) # Bottom Stroke local diag : include : fraktur-stroke S @@ -27,10 +27,10 @@ glyph-block LetterLike-Fraktur-Upper-Z : begin corner [zBox.xp 0.166] [zBox.yp 0.5] include : difference - fraktur-stroke S - g2.ru.start [diag.last].x [diag.last].y - ~~~ [arch.rhs [zBox.yp 0.55] 0.375 (sw -- S.thick)] - g2.down.mid (zBox.right - OX) (post@ <+> ArchDepthA) - hookend zBox.bot (sw -- S.thick) - g2 zBox.left (pre@ <+> SHook) - MaskAboveLine [diag.first].x [diag.first].y [diag.last].x [diag.last].y 4 + lift-@ : fraktur-stroke S + g2.ru.start [diag.last].x [diag.last].y + ~~~ [arch.rhs (sw -- S.thick) [zBox.yp 0.55] 0.375] + g2.down.mid (zBox.right - OX) (@yB + ArchDepthA) + hookend (sw -- S.thick) (@yB = zBox.bot) + g2 zBox.left (@yB + SHook) + MaskAboveLine [diag.first].x [diag.first].y [diag.last].x [diag.last].y 4 diff --git a/packages/font-glyphs/src/letter-like/fraktur/x.ptl b/packages/font-glyphs/src/letter-like/fraktur/x.ptl index 5a1e1592c6..69809116d0 100644 --- a/packages/font-glyphs/src/letter-like/fraktur/x.ptl +++ b/packages/font-glyphs/src/letter-like/fraktur/x.ptl @@ -1,6 +1,6 @@ $$include '../../meta/macros.ptl' -import [mix fallback] from "@iosevka/util" +import [mix fallback slY] from "@iosevka/util" glyph-module @@ -12,23 +12,23 @@ glyph-block LetterLike-Fraktur-X : begin glyph-block-import LetterLike-Fraktur-Common : Wave FHook PHexTop PHexBot define [XShapeHalf pen box] : glyph-proc - include : fraktur-stroke pen - corner (post@ <-> DecoSizeX) (post@ <-> DecoSizeY) - corner box.left box.top - straight.down.mid box.xMid [pre@mix@post 0.5] - corner box.left box.bot - corner (pre@ <-> DecoSizeX) (pre@ <+> DecoSizeY) + include : lift-@ : fraktur-stroke pen + corner (@xL - DecoSizeX) (@yT - DecoSizeY) + corner (@xL = box.left) (@yT = box.top) + straight.down.mid box.xMid box.yMid + corner @xL (@yB = box.bot) + corner (@xL - DecoSizeX) (@yB + DecoSizeY) define [XSHapeImpl pen box] : glyph-proc local bodyBox : box.withXPadding (0.5 * DecoSizeX) include : XShapeHalf pen bodyBox include : FlipAround box.xMid box.yMid include : XShapeHalf pen bodyBox - include : fraktur-stroke F - corner ([box.xp 0.25] - 0.5 * DecoSizeX) [post@slope : 0.25 * SlopeA] - corner box.xMid box.yMid - corner [box.xp 0.75] [pre@slope : 0.25 * SlopeA] - corner (pre@ <+> 0.5 * DecoSizeX) (pre@ <-> 0.5 * DecoSizeY) + include : lift-@ : fraktur-stroke F + corner (@xL = [box.xp 0.25] - 0.5 * DecoSizeX) [slY @xM @yM @xL : 0.25 * SlopeA] + corner (@xM = box.xMid) (@yM = box.yMid) + corner (@xR = [box.xp 0.75]) (@yR = [slY @xM @yM @xR : 0.25 * SlopeA]) + corner (@xR + 0.5 * DecoSizeX) (@yR - 0.5 * DecoSizeY) create-glyph "frak/X" 0x1D51B : glyph-proc local df : include : UpperDf 1 diff --git a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl index 97d7da3137..4e47d0de27 100644 --- a/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/lower-sha-group.ptl @@ -54,12 +54,11 @@ glyph-block Letter-Armenian-Lower-Sha-Group : begin local x1 : df.middle + [HSwToV : [StrokeWidthBlend 0 0.4] * df.mvs] local y1 : mix (Descender + df.mvs) refY [StrokeWidthBlend 0.65 0.7] - include : dispiro + include : lift-@ : dispiro widths.lhs df.mvs straight.up.start x1 y1 [heading Upward] - g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] - flat df.leftSB (XH - 1.1 * SmallArchDepthA) [widths.rhs df.mvs] - curl df.leftSB (XH - SmallArchDepthA) + g4 [mix x1 df.leftSB 0.5] [mix y1 @y3 0.5] [widths.center df.mvs] + g4.up.mid (df.leftSB + OX) (@y3 = XH - 0.875 * SmallArchDepthA) [widths.rhs df.mvs] arch.rhs XH (sw -- df.mvs) TwoNeck df XH Descender diff --git a/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl index 355c1166e4..d1d7605f75 100644 --- a/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl +++ b/packages/font-glyphs/src/letter/armenian/upper-za-group.ptl @@ -48,13 +48,13 @@ glyph-block Letter-Armenian-Upper-Za-Group : begin arcvh corner df.leftSB (df.mvs - df.shoulderFine) [widths.rhs df.shoulderFine] corner df.leftSB CAP - dispiro + lift-@ : dispiro widths.lhs df.mvs - flat df.leftSB (CAP - ArchDepthA) - curl df.leftSB (CAP - 1.1 * ArchDepthA) - g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center df.mvs] - flat x1 (0.55 * ArchDepthB) [widths.rhs fine] - curl x1 (0.5 * ArchDepthB) [widths.rhs fine] + flat @x2 (CAP - ArchDepthA) + curl (@x2 = df.leftSB) (@y2 = CAP - 1.1 * ArchDepthA) + g4 [mix x1 @x2 0.5] [mix @y2 @y4 0.5] [widths.center df.mvs] + flat x1 (@y4 = 0.55 * ArchDepthB) [widths.rhs fine] + curl x1 (0.5 * ArchDepthB) arcvh g4 df.leftSB (df.mvs - df.shoulderFine) [widths.rhs df.shoulderFine] include : VBar.l df.leftSB 0 VJut fine diff --git a/packages/font-glyphs/src/letter/cyrillic/big-yus.ptl b/packages/font-glyphs/src/letter/cyrillic/big-yus.ptl index 66eded66b7..8083d730fd 100644 --- a/packages/font-glyphs/src/letter/cyrillic/big-yus.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/big-yus.ptl @@ -100,13 +100,12 @@ glyph-block Letter-Cyrillic-BigYus : begin define divSub : (df.width - gap - df.mvs) / Width define dfSub : DivFrame divSub 3 include : CyrBigYusShape dfSub top yp df.mvs - eject-contour 'serifMB' eject-contour 'serifRB' include : Translate (Width * (df.div - divSub)) 0 include : Iotified.outer df top hBarRight -- [mix df.leftSB df.rightSB (2 / 3)] - hBarY -- top * yp - df.mvs * 0.5 + hBarY -- (top * yp - df.mvs * 0.5) fCapital -- fCapital if SLAB : begin @@ -114,7 +113,7 @@ glyph-block Letter-Cyrillic-BigYus : begin include sf.rb.outer create-glyph 'cyrl/BigYusIotified' 0x46C : glyph-proc - local df : include : DivFrame para.diversityM 4 + local df : include : DivFrame (para.diversityM ** 2) 4 include : df.markSet.capital include : CyrIotifiedBigYusShape true df CAP 0.575 diff --git a/packages/font-glyphs/src/letter/cyrillic/che.ptl b/packages/font-glyphs/src/letter/cyrillic/che.ptl index 492b9136e2..bb41a95c14 100644 --- a/packages/font-glyphs/src/letter/cyrillic/che.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/che.ptl @@ -39,11 +39,11 @@ glyph-block Letter-Cyrillic-Che : begin __ : VBar.r df.rightSB 0 top sw include : cheBowl.shape - left -- df.leftSB - right -- df.rightSB - top -- top + left -- df.leftSB + right -- df.rightSB + top -- top bottom -- (bar - DToothlessRise - 0.5 * sw) - sw -- sw + sw -- sw local sf : SerifFrame.fromDf df top 0 include : tagged 'serifLT' : match slabType @@ -102,19 +102,19 @@ glyph-block Letter-Cyrillic-Che : begin define [CyrTcheShape] : with-params [df top pyBar bodyType slabType [teSerifs SLAB] [sw : AdviceStroke 2.75] [yBarOffset DToothlessRise]] : glyph-proc local bar : top * [fallback pyBar 0.5] + yBarOffset - local left : [mix df.leftSB df.rightSB 0.2] - [HSwToV : 0.25 * sw] + OX + local left : [mix df.leftSB df.rightSB : if (df.div > 1) 0.25 0.2] - [HSwToV : 0.25 * sw] + OX local right : df.rightSB - OX include : tagged 'strokeR' : match bodyType [Just BODY.TAILED] : RightwardTailedBar right 0 top (sw -- sw) __ : VBar.r right 0 top sw - include : dispiro - widths.lhs sw - flat left top [heading Downward] - curl left (bar - DToothlessRise + ArchDepthB - HalfStroke) - arch.lhs.centerAt.ltr.b [mix left right 0.5] (bar - DToothlessRise - HalfStroke) - g4 (right - 1 / 16) (bar - HalfStroke) [heading Rightward] + include : cheBowl.shape + left -- left + right -- right + top -- top + bottom -- (bar - DToothlessRise - 0.5 * sw) + sw -- sw local xTopBarLeft : df.leftSB - SideJut local xTopBarRight : mix xTopBarLeft (left + [HSwToV : 0.5 * sw]) 2 @@ -136,9 +136,9 @@ glyph-block Letter-Cyrillic-Che : begin __ : glyph-proc if teSerifs : begin - local swVJut : Math.min [AdviceStroke 4.5] (0.625 * (left - xTopBarLeft)) - include : VSerif.dl xTopBarLeft top VJut swVJut - include : VSerif.dr xTopBarRight top VJut swVJut + local swVJut : Math.min (0.625 * (left - xTopBarLeft)) : AdviceStroke 4.5 + include : VSerif.dl xTopBarLeft top VJut swVJut + include : VSerif.dr xTopBarRight top VJut swVJut create-glyph 'cyrl/Che' 0x427 : glyph-proc include : MarkSet.capital @@ -166,9 +166,10 @@ glyph-block Letter-Cyrillic-Che : begin foreach { suffix { doST doSB } } [Object.entries TcheConfig] : do create-glyph "cyrl/Tche.\(suffix)" : glyph-proc - include : MarkSet.capital - include : LeaningAnchor.Below.VBar.r RightSB - include : CyrTcheShape [DivFrame 1] CAP [if SLAB 0.45 0.35] BODY.STRAIGHT + local df : include : DivFrame para.diversityT + include : df.markSet.capital + include : LeaningAnchor.Below.VBar.r df.rightSB + include : CyrTcheShape df CAP [if SLAB 0.45 0.35] BODY.STRAIGHT if SLAB SERIFS.ALL SERIFS.NONE teSerifs -- doST @@ -199,14 +200,16 @@ glyph-block Letter-Cyrillic-Che : begin include : CyrCcheShape df XH [if SLAB 0.45 0.4] body if SLAB [if para.isItalic slabItalic slabUpright] SERIFS.NONE - DefineSelectorGlyph "cyrl/tche" suffix [DivFrame 1] 'e' + define cyrTcheDf : DivFrame para.diversityT + + DefineSelectorGlyph "cyrl/tche" suffix cyrTcheDf 'e' foreach { suffixTe { doST doSB } } [Object.entries TcheConfig] : do create-glyph "cyrl/tche.\(suffix).\(suffixTe)" : glyph-proc set-width 0 set-mark-anchor 'cvDecompose' 0 0 - include : LeaningAnchor.Below.VBar.r RightSB - include : CyrTcheShape [DivFrame 1] XH [if SLAB 0.45 0.4] body + include : LeaningAnchor.Below.VBar.r cyrTcheDf.rightSB + include : CyrTcheShape cyrTcheDf XH [if SLAB 0.45 0.4] body if SLAB [if para.isItalic slabItalic slabUpright] SERIFS.NONE teSerifs -- doST @@ -229,10 +232,10 @@ glyph-block Letter-Cyrillic-Che : begin define [CheVBarBarShape top pyBar] : begin local SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - [HSwToV : 2 * Stroke]) / HVContrast) local yc : top * [fallback pyBar 0.5] + Stroke * 0.1 - return : VBar.m Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) SwCheVBar + return : VBar.m Middle (yc + LongVJut * 0.8) (yc - LongVJut * 0.8) SwCheVBar - derive-composites 'cyrl/CheVBar' 0x4B8 'cyrl/Che' [CheVBarBarShape CAP [if SLAB 0.45 0.35]] - derive-composites 'cyrl/cheVBar' 0x4B9 'cyrl/che' [CheVBarBarShape XH [if SLAB 0.45 0.4 ]] + derive-composites 'cyrl/CheVBar' 0x4B8 'cyrl/Che' [CheVBarBarShape CAP : if SLAB 0.45 0.35] + derive-composites 'cyrl/cheVBar' 0x4B9 'cyrl/che' [CheVBarBarShape XH : if SLAB 0.45 0.4] define ShhaConfig : object serifless SERIFS.NONE @@ -245,7 +248,7 @@ glyph-block Letter-Cyrillic-Che : begin include : MarkSet.capital include : LeaningAnchor.Above.VBar.l SB include : CyrCheShape [DivFrame 1] CAP (1 - HBarPos) BODY.STRAIGHT serifs - yBarOffset -- [HSwToV : Math.pow Stroke 2] / (RightSB - SB) + yBarOffset -- ([HSwToV : Stroke ** 2] / (RightSB - SB)) include : FlipAround Middle (CAP / 2) create-glyph "cyrl/Hwe.\(suffix)" : glyph-proc diff --git a/packages/font-glyphs/src/letter/cyrillic/de.ptl b/packages/font-glyphs/src/letter/cyrillic/de.ptl index 261ccdeaa4..de9677126f 100644 --- a/packages/font-glyphs/src/letter/cyrillic/de.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/de.ptl @@ -11,7 +11,7 @@ glyph-block Letter-Cyrillic-De : begin glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe EpsilonConfig glyph-block-export BottomExtension - local BottomExtension : 0.25 * Stroke - LongJut + local BottomExtension : 0.25 * Stroke - LongVJut glyph-block-export CyrDeBottom define [CyrDeBottom left right _sw _desc] : glyph-proc @@ -56,21 +56,22 @@ glyph-block Letter-Cyrillic-De : begin return : object desc xTopLeft xTopRight - define [CyrSoftDeShape top left right _sw vSlab] : glyph-proc - local descenderOverflow : if SLAB SideJut ((right - left) * 0.075) + define [CyrSoftDeShape top df _sw vSlab] : glyph-proc + local descenderOverflow : if SLAB SideJut ((df.rightSB - df.leftSB) * 0.075) local sw : fallback _sw Stroke local xm : if SLAB - [mix left right 0.625] + [HSwToV : 0.25 * sw] - mix left right 0.75 - local xTopRight : mix left xm : StrokeWidthBlend 0.95 0.96 + [mix df.leftSB df.rightSB 0.625] + [HSwToV : 0.25 * sw] + mix df.leftSB df.rightSB : if (df.div > 1) (2 / 3) (3 / 4) + local xTopRight : mix df.leftSB xm : StrokeWidthBlend 0.95 0.96 + local xTopBarRightEnd : mix df.width df.rightSB : if vSlab 0.25 0.375 - include : CyrDeShape top left xm _sw + include : CyrDeShape top df.leftSB xm sw include : if SLAB - then : HBar.t (xTopRight + descenderOverflow) right top sw - else : HBar.t xTopRight right top sw + then : HBar.t (xTopRight + descenderOverflow) xTopBarRightEnd top sw + else : HBar.t xTopRight xTopBarRightEnd top sw - if vSlab : include : VSerif.dr right top VJut (sw * VJutStroke / Stroke) + if vSlab : include : VSerif.dr xTopBarRightEnd top VJut (VJutStroke * sw / Stroke) create-glyph 'cyrl/De' 0x414 : glyph-proc include : MarkSet.capital @@ -90,13 +91,13 @@ glyph-block Letter-Cyrillic-De : begin local df : include : DivFrame para.diversityM 3 include : df.markSet.capital include : ExtendBelowBaseAnchors BottomExtension - include : CyrSoftDeShape CAP df.leftSB df.rightSB df.mvs false + include : CyrSoftDeShape CAP df df.mvs false create-glyph 'cyrl/DeSoft.topRightSerifed' : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.capital include : ExtendBelowBaseAnchors BottomExtension - include : CyrSoftDeShape CAP df.leftSB df.rightSB df.mvs true + include : CyrSoftDeShape CAP df df.mvs true select-variant 'cyrl/DeSoft' 0xA662 (follow -- 'cyrl/EnGhe/GhePart') @@ -104,13 +105,13 @@ glyph-block Letter-Cyrillic-De : begin local df : include : DivFrame para.diversityM 3 include : df.markSet.e include : ExtendBelowBaseAnchors BottomExtension - include : CyrSoftDeShape XH df.leftSB df.rightSB df.mvs false + include : CyrSoftDeShape XH df df.mvs false create-glyph 'cyrl/deSoft.topRightSerifed' : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.e include : ExtendBelowBaseAnchors BottomExtension - include : CyrSoftDeShape XH df.leftSB df.rightSB df.mvs true + include : CyrSoftDeShape XH df df.mvs true select-variant 'cyrl/deSoft' 0xA663 (follow -- 'cyrl/enghe/ghePart') @@ -126,7 +127,7 @@ glyph-block Letter-Cyrillic-De : begin right -- sr hook -- hook stroke -- sw - xo -- 0.5 * O + xo -- (0.5 * O) op -- 0.5 return : union [ze.Shape] [ze.AutoEndSerifL] diff --git a/packages/font-glyphs/src/letter/cyrillic/dje.ptl b/packages/font-glyphs/src/letter/cyrillic/dje.ptl index 609d9c0c79..e6b19775ef 100644 --- a/packages/font-glyphs/src/letter/cyrillic/dje.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/dje.ptl @@ -10,30 +10,31 @@ glyph-block Letter-Cyrillic-Dje : begin glyph-block-import Letter-Shared-Shapes : MidHook create-glyph 'cyrl/Dje' 0x402 : glyph-proc - include : MarkSet.capital + local df : include : DivFrame para.diversityT + include : df.markSet.capital local sw : AdviceStroke 2.75 - local left : [mix SB RightSB 0.20] + OX - local right : RightSB - OX + local left : [mix df.leftSB df.rightSB : if (df.div <= 1) 0.2 : if SLAB 0.3 0.25] + OX + local right : df.rightSB - OX - local xTopBarLeft : SB - SideJut + local xTopBarLeft : df.leftSB - SideJut local xTopBarRightSym : 2 * left + [HSwToV sw] - xTopBarLeft - local xTopBarRight : Math.max xTopBarRightSym : mix left RightSB 0.475 + local xTopBarRight : Math.max xTopBarRightSym : mix left df.rightSB 0.475 include : VBar.l left 0 CAP sw include : HBar.t xTopBarLeft xTopBarRight CAP sw include : MidHook.general - left -- (left + [HSwToV sw]) - right -- right - top -- [Math.min XH : if SLAB (CAP - 1.25 * VJut) XH] + left -- (left + [HSwToV sw]) + right -- right + top -- [Math.min XH : if SLAB (CAP - 1.25 * VJut) XH] bottom -- (Hook + sw / 2 + O) - ada -- ArchDepthA - adb -- ArchDepthB - sw -- sw + ada -- ArchDepthA + adb -- ArchDepthB + sw -- sw xDepth -- [Math.max ((left - right) / 2 + sw / 2) (-HookX * 1.2)] if SLAB : begin - local swVJut : Math.min [AdviceStroke 4.5] (0.625 * (left - xTopBarLeft)) + local swVJut : Math.min (0.625 * (left - xTopBarLeft)) : AdviceStroke 4.5 include : HSerif.lb left 0 SideJut - include : VSerif.dl xTopBarLeft CAP VJut swVJut + include : VSerif.dl xTopBarLeft CAP VJut swVJut include : VSerif.dr xTopBarRight CAP VJut swVJut diff --git a/packages/font-glyphs/src/letter/cyrillic/dzhe.ptl b/packages/font-glyphs/src/letter/cyrillic/dzhe.ptl index c3da7c8f30..052ea88c63 100644 --- a/packages/font-glyphs/src/letter/cyrillic/dzhe.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/dzhe.ptl @@ -8,19 +8,22 @@ glyph-block Letter-Cyrillic-Dzhe : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : SerifFrame + glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors define [CyrDzheShape top] : glyph-proc include : VBar.l SB 0 top include : HBar.b SB RightSB 0 include : VBar.r RightSB 0 top - include : VBar.m Middle Descender Stroke + local desc : 0.25 * Stroke - LongVJut + include : VBar.m Middle desc Stroke + include : ExtendBelowBaseAnchors desc if SLAB : let [sf : SerifFrame.fromDf [DivFrame 1] top 0] : begin include : composite-proc sf.lt.full sf.rt.full sf.lb.outer sf.rb.outer create-glyph 'cyrl/Dzhe' 0x40F : glyph-proc - include : MarkSet.capDesc + include : MarkSet.capital include : CyrDzheShape CAP create-glyph 'cyrl/dzhe.upright' : glyph-proc - include : MarkSet.p + include : MarkSet.e include : CyrDzheShape XH diff --git a/packages/font-glyphs/src/letter/cyrillic/dzzhe-zhwe.ptl b/packages/font-glyphs/src/letter/cyrillic/dzzhe-zhwe.ptl index d6d003a0d5..d23bf2fc4e 100644 --- a/packages/font-glyphs/src/letter/cyrillic/dzzhe-zhwe.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/dzzhe-zhwe.ptl @@ -33,14 +33,14 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin create-glyph "cyrl/Dzzhe/left" : glyph-proc define df : include : DivFrame para.diversityM 3.5 include : df.markSet.capital - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) set-base-anchor 'cvDecompose' 0 0 include : CyrDzzheDeShape df CAP create-glyph "cyrl/dzzhe.upright/left" : glyph-proc define df : include : DivFrame para.diversityM 3.5 include : df.markSet.e - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) set-base-anchor 'cvDecompose' 0 0 include : CyrDzzheDeShape df XH @@ -58,7 +58,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin right -- subDf.rightSB hook -- hook stroke -- sw - xo -- 0.33 * OX + xo -- (0.33 * OX) include : ze.Shape include : ze.AutoStartSerifL include : ze.AutoEndSerifL @@ -94,7 +94,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin left -- subDf.leftSB right -- subDf.rightSB hook -- hook - stroke -- 0.5 * sw + stroke -- (0.5 * sw) xo -- 0 yo -- 0 include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [zeNoO.ShapeMask] diff --git a/packages/font-glyphs/src/letter/cyrillic/el.ptl b/packages/font-glyphs/src/letter/cyrillic/el.ptl index 0cccb58b92..2195f7fdf8 100644 --- a/packages/font-glyphs/src/letter/cyrillic/el.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/el.ptl @@ -35,7 +35,7 @@ glyph-block Letter-Cyrillic-El : begin include : HBar.m xCutLeft right (top - halfSw) sw include : LegShape ztop -- [Point.fromXY Point.Type.Corner xCutLeft top] - zbot -- [Point.fromXY Point.Type.Corner [mix SB 0 [if SLAB 1 0.75]] 0] + zbot -- [Point.fromXY Point.Type.Corner [mix SB 0 : if SLAB 1 0.75] 0] xb -- xCutLeft fine -- sw @@ -55,15 +55,16 @@ glyph-block Letter-Cyrillic-El : begin [Just SLAB-LOWER] : HSerif.rb right 0 SideJut sw __ : glyph-proc - define [CyrSoftElShape left right top bodyType slabType _sw vSlab] : glyph-proc + define [CyrSoftElShape df top bodyType slabType _sw vSlab] : glyph-proc local sw : fallback _sw Stroke local xm : if SLAB - [mix left right 0.625] + [HSwToV : 0.25 * sw] - mix left right 0.75 + [mix df.leftSB df.rightSB 0.625] + [HSwToV : 0.25 * sw] + mix df.leftSB df.rightSB : if (df.div > 1) (2 / 3) (3 / 4) + local xTopBarRightEnd : mix df.width df.rightSB : if vSlab 0.25 0.375 - include : CyrElShape left xm top bodyType slabType _sw - include : HBar.t xm right top sw - if vSlab : include : VSerif.dr right top VJut (sw * VJutStroke / Stroke) + include : CyrElShape df.leftSB xm top bodyType slabType sw + include : HBar.t xm xTopBarRightEnd top sw + if vSlab : include : VSerif.dr xTopBarRightEnd top VJut (VJutStroke * sw / Stroke) create-glyph 'cyrl/El' 0x41B : glyph-proc include : MarkSet.capital @@ -84,12 +85,12 @@ glyph-block Letter-Cyrillic-El : begin create-glyph 'cyrl/ElSoft.serifless' : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.capital - include : CyrSoftElShape df.leftSB df.rightSB CAP BODY-STRAIGHT [if SLAB SLAB-ALL SLAB-NONE] df.mvs false + include : CyrSoftElShape df CAP BODY-STRAIGHT [if SLAB SLAB-ALL SLAB-NONE] df.mvs false create-glyph 'cyrl/ElSoft.topRightSerifed' : glyph-proc local df : include : DivFrame para.diversityM 3 include : df.markSet.capital - include : CyrSoftElShape df.leftSB df.rightSB CAP BODY-STRAIGHT [if SLAB SLAB-ALL SLAB-NONE] df.mvs true + include : CyrSoftElShape df CAP BODY-STRAIGHT [if SLAB SLAB-ALL SLAB-NONE] df.mvs true select-variant 'cyrl/ElSoft' 0xA664 (follow -- 'cyrl/EnGhe/GhePart') @@ -122,7 +123,7 @@ glyph-block Letter-Cyrillic-El : begin create-glyph "cyrl/elSoft.\(suffix).\(suffixGhe)" : glyph-proc set-width 0 set-mark-anchor 'cvDecompose' 0 0 - include : CyrSoftElShape cyrSoftElDf.leftSB cyrSoftElDf.rightSB XH body [if SLAB [if para.isItalic slabItalic slabUpright] SLAB-NONE] cyrSoftElDf.mvs cyrSoftElVSlab + include : CyrSoftElShape cyrSoftElDf XH body [if SLAB [if para.isItalic slabItalic slabUpright] SLAB-NONE] cyrSoftElDf.mvs cyrSoftElVSlab select-variant "cyrl/elSoft.\(suffix)" (follow -- 'cyrl/enghe/ghePart') diff --git a/packages/font-glyphs/src/letter/cyrillic/small-yus.ptl b/packages/font-glyphs/src/letter/cyrillic/small-yus.ptl index ea22386054..faac09ac3b 100644 --- a/packages/font-glyphs/src/letter/cyrillic/small-yus.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/small-yus.ptl @@ -85,13 +85,12 @@ glyph-block Letter-Cyrillic-SmallYus : begin if fClosed include : CyrClosedSmallYusShape dfSub top straightBar df.mvs include : CyrSmallYusShape dfSub top straightBar df.mvs - if [not fClosed] : eject-contour 'serifMB' eject-contour 'serifRB' include : Translate (Width * (df.div - divSub)) 0 include : Iotified.A df top hBarRight -- [mix df.leftSB df.rightSB (2 / 3)] - hBarY -- top / 2 - df.mvs * 0.5 + hBarY -- (top / 2 - df.mvs * 0.5) fCapital -- fCapital if SLAB : begin @@ -99,7 +98,7 @@ glyph-block Letter-Cyrillic-SmallYus : begin include sf.rb.outer create-glyph : glyph-proc - local df : include : DivFrame para.diversityM 4 + local df : include : DivFrame (para.diversityM ** 2) 4 include : df.markSet.capital create-forked-glyph 'cyrl/SmallYusIotified.straight' CyrIotifiedSmallYusShape false true df CAP true diff --git a/packages/font-glyphs/src/letter/cyrillic/te-midhook.ptl b/packages/font-glyphs/src/letter/cyrillic/te-midhook.ptl index 6f7e110425..9fe669e69c 100644 --- a/packages/font-glyphs/src/letter/cyrillic/te-midhook.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/te-midhook.ptl @@ -11,28 +11,29 @@ glyph-block Letter-Cyrillic-Te-MidHook : begin glyph-block-import Letter-Latin-Upper-T : TConfig define [Shape df top pArc slabTop slabBot] : glyph-proc + local sw : Math.min df.mvs : AdviceStroke 2.75 local left : [mix df.leftSB df.rightSB 0.3] + OX local xTopBarLeft : df.leftSB - SideJut - local xTopBarRightSym : 2 * left + [HSwToV df.mvs] - xTopBarLeft + local xTopBarRightSym : 2 * left + [HSwToV sw] - xTopBarLeft local xTopBarRight : Math.max xTopBarRightSym : mix left df.rightSB 0.475 - include : VBar.l left 0 top df.mvs - include : HBar.t xTopBarLeft xTopBarRight top df.mvs + include : VBar.l left 0 top sw + include : HBar.t xTopBarLeft xTopBarRight top sw include : MidHook.general - left -- (left + [HSwToV df.mvs]) + left -- (left + [HSwToV sw]) right -- df.rightSB - top -- (top * HBarPos + df.mvs / 4) + top -- (top * HBarPos + sw / 4) ada -- (ArchDepthA * pArc) adb -- (ArchDepthB * pArc) - sw -- df.mvs + sw -- sw if slabTop : begin include : VSerif.dl xTopBarLeft top VJut include : VSerif.dr xTopBarRight top VJut if slabBot : begin - include : HSerif.mb (left + [HSwToV : 0.5 * df.mvs]) 0 Jut + include : HSerif.mb (left + [HSwToV : 0.5 * sw]) 0 Jut foreach { suffix { div doST doSB } } [Object.entries TConfig] : do create-glyph "cyrl/TeMidHook.\(suffix)" : glyph-proc @@ -43,7 +44,7 @@ glyph-block Letter-Cyrillic-Te-MidHook : begin create-glyph "cyrl/teMidHook.upright.\(suffix)" : glyph-proc local df : include : DivFrame div include : df.markSet.p - include : Shape df XH [Math.pow HBarPos 0.3] doST doSB + include : Shape df XH (HBarPos ** 0.3) doST doSB select-variant 'cyrl/TeMidHook' 0xA68A (follow -- 'T') select-variant 'cyrl/teMidHook.upright' (follow -- 'T') diff --git a/packages/font-glyphs/src/letter/cyrillic/tje.ptl b/packages/font-glyphs/src/letter/cyrillic/tje.ptl index 07c9a22375..ba65376190 100644 --- a/packages/font-glyphs/src/letter/cyrillic/tje.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/tje.ptl @@ -53,7 +53,7 @@ glyph-block Letter-Cyrillic-Tje : begin include : LeftHalf df XH doST doSB foreach { suffix { Uc Lc } } [Object.entries YeriConfig] : do - create-glyph "cyrl/Tje/rightHalf.\(suffix)" : glyph-proc + create-glyph "cyrl/Tje/rightHalf.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT 3 include : df.markSet.capital include : RightHalf Uc df CAP diff --git a/packages/font-glyphs/src/letter/cyrillic/tse.ptl b/packages/font-glyphs/src/letter/cyrillic/tse.ptl index f03999bf27..bb4bf98d73 100644 --- a/packages/font-glyphs/src/letter/cyrillic/tse.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/tse.ptl @@ -42,12 +42,12 @@ glyph-block Letter-Cyrillic-Tse : begin serifless { false false } motionSerifed { true false } - define [CyrTeTseShape top teSerifs] : glyph-proc + define [CyrTeTseShape df top teSerifs] : glyph-proc local sw : AdviceStroke 2.75 - local left : [mix SB RightSB 0.2] - [HSwToV : 0.25 * sw] + OX - local right : RightSB - OX + local left : [mix df.leftSB df.rightSB : if (df.div > 1) 0.25 0.2] - [HSwToV : 0.25 * sw] + OX + local right : df.rightSB - OX - local xTopBarLeft : SB - SideJut + local xTopBarLeft : df.leftSB - SideJut local xTopBarRight : mix xTopBarLeft (left + [HSwToV : 0.5 * sw]) 2 include : VBar.l left 0 top sw @@ -67,18 +67,20 @@ glyph-block Letter-Cyrillic-Tse : begin include sf.rb.outer if teSerifs : begin - local swVJut : Math.min [AdviceStroke 4.5] (0.625 * (left - xTopBarLeft)) - include : VSerif.dl xTopBarLeft top VJut swVJut - include : VSerif.dr xTopBarRight top VJut swVJut + local swVJut : Math.min (0.625 * (left - xTopBarLeft)) : AdviceStroke 4.5 + include : VSerif.dl xTopBarLeft top VJut swVJut + include : VSerif.dr xTopBarRight top VJut swVJut foreach { suffix { doST doSB } } [Object.entries TeTseConfig] : do create-glyph "cyrl/TeTse.\(suffix)" : glyph-proc - include : MarkSet.capital - include : CyrTeTseShape CAP doST + local df : include : DivFrame para.diversityT + include : df.markSet.capital + include : CyrTeTseShape df CAP doST create-glyph "cyrl/tetse.upright.\(suffix)" : glyph-proc - include : MarkSet.e - include : CyrTeTseShape XH doST + local df : include : DivFrame para.diversityT + include : df.markSet.e + include : CyrTeTseShape df XH doST select-variant 'cyrl/TeTse' 0x4B4 (follow -- 'T/rtailBase') select-variant 'cyrl/tetse.upright' (follow -- 'T/rtailBase') diff --git a/packages/font-glyphs/src/letter/cyrillic/tshe.ptl b/packages/font-glyphs/src/letter/cyrillic/tshe.ptl index 36e82836b1..88bcce9b07 100644 --- a/packages/font-glyphs/src/letter/cyrillic/tshe.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/tshe.ptl @@ -10,27 +10,28 @@ glyph-block Letter-Cyrillic-Tshe : begin glyph-block-import Letter-Shared-Shapes : nShoulder create-glyph 'cyrl/Tshe' 0x40B : glyph-proc - include : MarkSet.capital + local df : include : DivFrame para.diversityT + include : df.markSet.capital local sw : AdviceStroke 2.75 - local left : [mix SB RightSB 0.20] + OX - local right : RightSB - OX + local left : [mix df.leftSB df.rightSB : if (df.div <= 1) 0.2 : if SLAB 0.3 0.25] + OX + local right : df.rightSB - OX local xTopBarLeft : SB - SideJut local xTopBarRightSym : 2 * left + [HSwToV sw] - xTopBarLeft - local xTopBarRight : Math.max xTopBarRightSym : mix left RightSB 0.475 + local xTopBarRight : Math.max xTopBarRightSym : mix left df.rightSB 0.475 include : nShoulder.shape - left -- (left + [HSwToV sw]) - right -- right - top -- [Math.min XH : if SLAB (CAP - 1.25 * VJut) XH] + left -- (left + [HSwToV sw]) + right -- right + top -- [Math.min XH : if SLAB (CAP - 1.25 * VJut) XH] stroke -- sw include : VBar.l left 0 CAP sw include : HBar.t xTopBarLeft xTopBarRight CAP sw if SLAB : begin - local swVJut : Math.min [AdviceStroke 4.5] (0.625 * (left - xTopBarLeft)) - include : HSerif.mb (left + [HSwToV : 0.5 * sw]) 0 Jut + local swVJut : Math.min (0.625 * (left - xTopBarLeft)) : AdviceStroke 4.5 + include : HSerif.mb (left + [HSwToV : 0.5 * sw]) 0 Jut include : HSerif.mb (right - [HSwToV : 0.5 * sw]) 0 Jut - include : VSerif.dl xTopBarLeft CAP VJut swVJut + include : VSerif.dl xTopBarLeft CAP VJut swVJut include : VSerif.dr xTopBarRight CAP VJut swVJut diff --git a/packages/font-glyphs/src/letter/cyrillic/yat.ptl b/packages/font-glyphs/src/letter/cyrillic/yat.ptl index 872ee28afb..205bc32cf3 100644 --- a/packages/font-glyphs/src/letter/cyrillic/yat.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/yat.ptl @@ -24,7 +24,7 @@ glyph-block Letter-Cyrillic-Yat : begin include : Yeri top left -- xYeriLeft - right -- df.rightSB - O * 2 + right -- (df.rightSB - O * 2) pBar -- pBar stroke -- sw diff --git a/packages/font-glyphs/src/letter/cyrillic/yeri.ptl b/packages/font-glyphs/src/letter/cyrillic/yeri.ptl index 2eb07769b0..69c66edfab 100644 --- a/packages/font-glyphs/src/letter/cyrillic/yeri.ptl +++ b/packages/font-glyphs/src/letter/cyrillic/yeri.ptl @@ -183,7 +183,7 @@ glyph-block Letter-Cyrillic-Yeri : begin local xLeftBarLeftEdge : Math.max (right - (RightSB - SB)) : if SLAB [mix left right 0.35] - [HSwToV : 0.50 * stroke] [mix left right 0.20] - [HSwToV : 0.25 * stroke] - local xTopBarLeftEnd : mix 0 left [if SLAB 0.25 0.375] + local xTopBarLeftEnd : mix 0 left : if SLAB 0.25 0.375 include : HBar.t xTopBarLeftEnd (Stroke * 0.1 + xLeftBarLeftEdge) top stroke include : Base top @@ -201,7 +201,7 @@ glyph-block Letter-Cyrillic-Yeri : begin local xLeftBarLeftEdge : Math.max (right - (RightSB - SB)) : if SLAB [mix left right 0.35] - [HSwToV : 0.50 * stroke] [mix left right 0.20] - [HSwToV : 0.25 * stroke] - local xTopBarLeftEnd : mix 0 left [if SLAB 0.25 0.375] + local xTopBarLeftEnd : mix 0 left : if SLAB 0.25 0.375 include : Base top left -- xLeftBarLeftEdge @@ -216,7 +216,7 @@ glyph-block Letter-Cyrillic-Yeri : begin local sw : if fBackYer [AdviceStroke 3.25 df.div] df.mvs local jut : [Math.min 1 : Math.sqrt : sw / Stroke] * Jut - local xm : mix (df.rightSB - [HSwToV sw]) (df.middle + [HSwToV : 0.5 * sw]) 0.75 + local xm : mix (df.rightSB - [HSwToV sw]) (df.middle + [HSwToV : 0.5 * sw]) : if (fBackYer && df.div > 1) 0.625 0.75 include : if fBackYer CyrBackYerShape LeftHalf @@ -272,48 +272,67 @@ glyph-block Letter-Cyrillic-Yeri : begin local stroke : AdviceStroke2 2 3 top return : LetterBarOverlay.l.in x -- df.leftSB - bot -- top * YeriBarPos + stroke / 2 - top -- top - [if SLAB Stroke 0] + bot -- (top * YeriBarPos + stroke / 2) + top -- (top - [if SLAB Stroke 0]) foreach { suffix { Uc Lc } } [Object.entries YeriConfig] : do create-glyph "cyrl/Yeri.\(suffix)" : glyph-proc local df : include : DivFrame 1 include : df.markSet.capital - include : Uc (left -- df.leftSB) (right -- df.rightSB) CAP + include : Uc CAP + left -- df.leftSB + right -- df.rightSB create-glyph "cyrl/yeri.\(suffix)" : glyph-proc local df : include : DivFrame 1 include : df.markSet.e - include : Lc (left -- df.leftSB) (right -- df.rightSB) XH + include : Lc XH + left -- df.leftSB + right -- df.rightSB create-glyph "cyrl/YeriBar.\(suffix)" : glyph-proc local df : include : DivFrame 1 include : df.markSet.capital - include : Uc (left -- df.leftSB) (right -- df.rightSB) CAP + include : Uc CAP + left -- df.leftSB + right -- df.rightSB include : YeriOverlayBar df CAP create-glyph "cyrl/yeriBar.\(suffix)" : glyph-proc local df : include : DivFrame 1 include : df.markSet.e - include : Lc (left -- df.leftSB) (right -- df.rightSB) XH + include : Lc XH + left -- df.leftSB + right -- df.rightSB include : YeriOverlayBar df XH create-glyph "cyrl/Yer.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT include : df.markSet.capital - include : CyrBackYerShape Uc CAP (left -- df.leftSB) (right -- df.rightSB) + include : CyrBackYerShape Uc CAP + left -- df.leftSB + right -- df.rightSB create-glyph "cyrl/yer.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT include : df.markSet.e - include : CyrBackYerShape Lc XH (left -- df.leftSB) (right -- df.rightSB) + include : CyrBackYerShape Lc XH + left -- df.leftSB + right -- df.rightSB create-glyph "cyrl/yerTall.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT include : df.markSet.b - include : CyrBackYerShape Lc Ascender (left -- df.leftSB) (right -- df.rightSB) (pBar -- YeriBarPos * XH / Ascender) + include : CyrBackYerShape Lc Ascender + left -- df.leftSB + right -- df.rightSB + pBar -- (YeriBarPos * XH / Ascender) create-glyph "cyrl/YerNeutral.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT include : df.markSet.capital - include : CyrNeutralYerShape Uc CAP (left -- df.leftSB) (right -- df.rightSB) + include : CyrNeutralYerShape Uc CAP + left -- df.leftSB + right -- df.rightSB create-glyph "cyrl/yerNeutral.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT include : df.markSet.e - include : CyrNeutralYerShape Lc XH (left -- df.leftSB) (right -- df.rightSB) + include : CyrNeutralYerShape Lc XH + left -- df.leftSB + right -- df.rightSB create-glyph "ZhuangToneSix.\(suffix)" : glyph-proc include : MarkSet.capital include : ZhuangToneSixShape Uc CAP @@ -331,11 +350,11 @@ glyph-block Letter-Cyrillic-Yeri : begin include : df.markSet.e include : CyrYeryShape Lc df XH false fTail if [not fTail] : create-glyph "cyrl/YeryBack.\(suffix)" : glyph-proc - local df : include : DivFrame para.diversityM 3 + local df : include : DivFrame [mix 1 para.diversityM 1.5] 3 include : df.markSet.capital include : CyrYeryShape Uc df CAP true fTail create-glyph "cyrl/yeryBack.\(suffix)" : glyph-proc - local df : include : DivFrame para.diversityM 3 + local df : include : DivFrame [mix 1 para.diversityM 1.5] 3 include : df.markSet.e include : CyrYeryShape Lc df XH true fTail diff --git a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl index 6a76df6219..abc8d7ca3f 100644 --- a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl @@ -241,25 +241,25 @@ glyph-block Letter-Greek-Lower-Epsilon : begin create-glyph "cyrl/ze.BGR.\(suffix)" : glyph-proc include : MarkSet.p - include : let [ze : CyrZe slabTop slabBot XH Descender (hook -- SHook)] + include : let [ze : CyrZe slabTop slabBot XH Descender (hook -- Hook)] union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL] create-glyph "cyrl/Dhe.\(suffix)" : glyph-proc include [refer-glyph "cyrl/Ze.\(suffix)"] AS_BASE ALSO_METRICS - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc include : let [zeNoO : CyrZe slabTop slabBot CAP 0 (hook -- Hook) (xo -- 0) (yo -- 0)] difference - VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] + VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke zeNoO.ShapeMask create-glyph "cyrl/dhe.\(suffix)" : glyph-proc include [refer-glyph "cyrl/ze.\(suffix)"] AS_BASE ALSO_METRICS - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc include : let [zeNoO : CyrZe slabTop slabBot XH 0 (hook -- SHook) (xo -- 0) (yo -- 0)] difference - VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] + VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke zeNoO.ShapeMask create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc diff --git a/packages/font-glyphs/src/letter/greek/phi.ptl b/packages/font-glyphs/src/letter/greek/phi.ptl index 124d5c65d4..328d69485d 100644 --- a/packages/font-glyphs/src/letter/greek/phi.ptl +++ b/packages/font-glyphs/src/letter/greek/phi.ptl @@ -129,7 +129,7 @@ glyph-block Letter-Greek-Phi : begin local df : include : DivFrame para.diversityM 3 include : df.markSet.capital - local vJut : Math.max (LongJut - HalfStroke) : if SLAB (1.5 * Stroke) 0 + local vJut : Math.max (LongVJut - HalfStroke) : if SLAB (1.5 * Stroke) 0 local top : CAP + vJut local bot : 0 - vJut diff --git a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl index 10b57add8b..3e081132ff 100644 --- a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl +++ b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl @@ -59,14 +59,14 @@ glyph-block Letter-Greek-Upper-Gamma: begin create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS include : CyrDescender.rSideJut - x -- GammaBarLeft + [HSwToV Stroke] + x -- (GammaBarLeft + [HSwToV Stroke]) y -- 0 jut -- MidJutSide create-glyph "cyrl/GheDHook.\(suffix)" : glyph-proc include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS include : PalatalHook.rSideJut - x -- GammaBarLeft + [HSwToV Stroke] + x -- (GammaBarLeft + [HSwToV Stroke]) y -- 0 jut -- MidJutSide @@ -77,30 +77,30 @@ glyph-block Letter-Greek-Upper-Gamma: begin create-glyph "cyrl/gheDescender.upright.\(suffix)" : glyph-proc include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS include : CyrDescender.rSideJut - x -- GammaBarLeft + [HSwToV Stroke] + x -- (GammaBarLeft + [HSwToV Stroke]) y -- 0 jut -- MidJutSide create-glyph "cyrl/gheDHook.upright.\(suffix)" : glyph-proc include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS include : PalatalHook.rSideJut - x -- GammaBarLeft + [HSwToV Stroke] + x -- (GammaBarLeft + [HSwToV Stroke]) y -- 0 jut -- MidJutSide create-glyph "cyrl/Ge.\(suffix)" : glyph-proc include : MarkSet.capital - include : ExtendAboveBaseAnchors (CAP + LongJut - 0.5 * Stroke) + include : ExtendAboveBaseAnchors (CAP + LongVJut - HalfStroke) include : GammaShape CAP 0 slabType eject-contour 'serifRT' - include : VBar.r (RightSB - OX) CAP (CAP + LongJut - 0.5 * Stroke) + include : VBar.r (RightSB - OX) CAP (CAP + LongVJut - HalfStroke) create-glyph "cyrl/ge.\(suffix)" : glyph-proc include : MarkSet.e - include : ExtendAboveBaseAnchors (XH + LongJut - 0.5 * Stroke) + include : ExtendAboveBaseAnchors (XH + LongVJut - HalfStroke) include : GammaShape XH 0 slabType eject-contour 'serifRT' - include : VBar.r (RightSB - OX) XH (XH + LongJut - 0.5 * Stroke) + include : VBar.r (RightSB - OX) XH (XH + LongVJut - HalfStroke) if para.isItalic : eject-contour 'serifLB' create-glyph "cyrl/GheMidHook.\(suffix)" : glyph-proc @@ -109,7 +109,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin include : MidHook.general left -- (GammaBarLeft + [HSwToV Stroke]) right -- RightSB - top -- CAP * HBarPos + Stroke / 4 + top -- (CAP * HBarPos + Stroke / 4) ada -- ArchDepthA adb -- ArchDepthB @@ -119,9 +119,9 @@ glyph-block Letter-Greek-Upper-Gamma: begin include : MidHook.general left -- (GammaBarLeft + [HSwToV Stroke]) right -- RightSB - top -- XH * HBarPos + Stroke / 4 - ada -- ArchDepthA * [Math.pow HBarPos 0.3] - adb -- ArchDepthB * [Math.pow HBarPos 0.3] + top -- (XH * HBarPos + Stroke / 4) + ada -- (ArchDepthA * (HBarPos ** 0.3)) + adb -- (ArchDepthB * (HBarPos ** 0.3)) if para.isItalic : eject-contour 'serifLB' select-variant 'grek/Gamma' 0x393 diff --git a/packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl b/packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl index db9467201d..ff5b848c1f 100644 --- a/packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl +++ b/packages/font-glyphs/src/letter/greek/upper-lambda-delta.ptl @@ -147,6 +147,6 @@ glyph-block Letter-Latin-Upper-Lambda-Delta : begin local xCutLeft SB local xCutRight RightSB include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0 - include : VBar.l (xCutLeft - descenderOverflow) (-LongJut + HalfStroke) Stroke - include : VBar.r (xCutRight + descenderOverflow) (-LongJut + HalfStroke) Stroke + include : VBar.l (xCutLeft - descenderOverflow) (-LongVJut + HalfStroke) Stroke + include : VBar.r (xCutRight + descenderOverflow) (-LongVJut + HalfStroke) Stroke diff --git a/packages/font-glyphs/src/letter/latin-ext/archaic-m.ptl b/packages/font-glyphs/src/letter/latin-ext/archaic-m.ptl index 514599fee1..484b662fe6 100644 --- a/packages/font-glyphs/src/letter/latin-ext/archaic-m.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/archaic-m.ptl @@ -37,6 +37,6 @@ glyph-block Letter-Latin-Archaic-M : begin include : difference sf.rt.full [MaskLeft : mix cl cr 0.7] create-glyph "ArchaicM" 0xA7FF : glyph-proc - local df : include : DivFrame para.diversityM 4.5 + local df : include : DivFrame [mix 1 para.diversityM 1.5] 4.5 include : df.markSet.capital include : ArchaicMShape df CAP 0 diff --git a/packages/font-glyphs/src/letter/latin-ext/ezh.ptl b/packages/font-glyphs/src/letter/latin-ext/ezh.ptl index 50e4a8538f..3cfae45fe3 100644 --- a/packages/font-glyphs/src/letter/latin-ext/ezh.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/ezh.ptl @@ -10,51 +10,45 @@ glyph-block Letter-Latin-Ezh : begin glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : CurlyTail SerifedArcEnd PalatalHook RetroflexHook - define [StdTerminalShape df top bot yMidBar sw] : begin - local hookDepth : Hook * (top - bot) / [fallback para.cap0 CAP] - local pArc : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB) - list - g4 (df.rightSB - OX) [mix yMidBar bot pArc] - hookend bot - g4 df.leftSB (bot + hookDepth) - - define [HooklessTerminalShape p] : function [df top bot yMidBar sw] : list + define [pArc ada adb] : adb / (ada + adb) + + define [StdTerminalShape df top bot yMidBar sw hook ada adb] : list + g4 (df.rightSB - OX) [mix yMidBar bot : pArc ada adb] + hookend bot + g4 df.leftSB (bot + hook) + + define [HooklessTerminalShape p] : function [df top bot yMidBar sw hook ada adb] : list g4.down.mid (df.rightSB - OX) [mix yMidBar bot p] [heading Downward] - define [RetroflexConnectionTerminal df top bot yMidBar sw] : begin - local hookDepth : Hook * (top - bot) / [fallback para.cap0 CAP] - local pArc : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB) - list - g4 (df.rightSB - OX) [mix yMidBar bot pArc] - SerifedArcEnd.RtlRhs df.leftSB bot sw hookDepth + define [RetroflexConnectionTerminal df top bot yMidBar sw hook ada adb] : list + g4 (df.rightSB - OX) [mix yMidBar bot : pArc ada adb] + SerifedArcEnd.RtlRhs df.leftSB bot sw hook - define [CurlyTailTerminalShape df top bot yMidBar sw] : begin - local pArc : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB) + define [CurlyTailTerminalShape df top bot yMidBar sw hook ada adb] : begin local fine : df.adviceStroke2 3.5 5 (top - bot) - return : list - g4 (df.rightSB - OX) [mix yMidBar bot pArc] + g4 (df.rightSB - OX) [mix yMidBar bot : pArc ada adb] CurlyTail.n fine bot df.leftSB df.width (bot + 0.5 * fine) - yLoopTop -- [mix yMidBar bot 0.5] + 0.25 * fine + yLoopTop -- ([mix yMidBar bot 0.5] + 0.25 * fine) swBefore -- sw - define [ConventionalStart df top bot ezhLeft ezhRight yMidBar sw] : glyph-proc + define [ConventionalStart df top bot ezhLeft ezhRight yMidBar sw hook] : glyph-proc include : HBar.t df.leftSB ezhRight top sw include : dispiro - corner ezhRight (top - sw) [widths.rhs (sw / HVContrast)] - corner ezhLeft yMidBar [widths.lhs (sw / HVContrast)] + corner ezhRight (top - sw) [widths.rhs : sw / HVContrast] + corner ezhLeft yMidBar [widths.lhs : sw / HVContrast] - define [CurisveStart df top bot ezhLeft ezhRight yMidBar sw] : glyph-proc + define [CurisveStart df top bot ezhLeft ezhRight yMidBar sw hook] : glyph-proc define hookTerminalWidth : [AdviceStroke 3.5] / Stroke * sw define xDiagWidth : 1 * sw define yFootHeight : [Math.max (0.15 * (top - bot)) (sw * 0.625)] + 0.4 * sw - define yHookDepth : Hook + sw * 0.25 + define yHookDepth : hook + sw * 0.25 define yHookStraightDepth : Math.min (yHookDepth - sw * 1.1) (yHookDepth / 3 - sw / 4) define xHookDepth : Math.max (0.25 * (df.rightSB - df.leftSB)) (hookTerminalWidth * 1.5) define xMockTailDepth : Math.max (0.375 * (df.rightSB - df.leftSB)) (hookTerminalWidth * 1.375) define kTop 0.625 define kBot 0.625 - define yTailDepth : Hook * 0.5 + define yTailDepth : hook * 0.5 include : tagged 'strokeTop' : intersection spiro-outline @@ -74,8 +68,8 @@ glyph-block Letter-Latin-Ezh : begin include : VBar.r ezhRight top (top - yFootHeight) (xDiagWidth / HVContrast) include : dispiro - corner ezhRight (top - yFootHeight) [widths.rhs (sw / HVContrast)] - corner ezhLeft yMidBar [widths.lhs (sw / HVContrast)] + corner ezhRight (top - yFootHeight) [widths.rhs : sw / HVContrast] + corner ezhLeft yMidBar [widths.lhs : sw / HVContrast] glyph-block-export EzhShape define flex-params [EzhShape] : glyph-proc @@ -88,21 +82,24 @@ glyph-block Letter-Latin-Ezh : begin local-parameter : isCursive -- false local-parameter : isSerifed -- SLAB local-parameter : sw -- Stroke + local-parameter : hook -- Hook + local-parameter : ada -- SmallArchDepthA + local-parameter : adb -- SmallArchDepthB - local yMidBar : [mix bot top [if isCursive 0.5 0.55]] + 0.5 * sw - local ezhLeft : mix df.leftSB df.rightSB pLeft + local yMidBar : [mix bot top : if isCursive 0.5 0.55] + 0.5 * sw + local ezhLeft : mix df.leftSB df.rightSB pLeft local ezhRight : mix df.leftSB df.rightSB pRight include : union if isCursive - CurisveStart df top bot ezhLeft ezhRight yMidBar sw - ConventionalStart df top bot ezhLeft ezhRight yMidBar sw + CurisveStart df top bot ezhLeft ezhRight yMidBar sw hook + ConventionalStart df top bot ezhLeft ezhRight yMidBar sw hook dispiro widths.rhs sw flat ezhLeft yMidBar [heading Rightward] curl [arch.adjust-x.top df.middle] yMidBar archv - terminalShape df top bot yMidBar sw + terminalShape df top bot yMidBar sw hook ada adb if isSerifed : include : VSerif.dl df.leftSB top VJut (sw / Stroke * VJutStroke) @@ -116,15 +113,30 @@ glyph-block Letter-Latin-Ezh : begin foreach { suffix { isCursive isSerifed } } [pairs-of EzhConfig] : do create-glyph "Ezh.\(suffix)" : glyph-proc include : MarkSet.capital - include : EzhShape [DivFrame 1] CAP 0 (isCursive -- isCursive) (isSerifed -- isSerifed) + include : EzhShape [DivFrame 1] CAP 0 + isCursive -- isCursive + isSerifed -- isSerifed + hook -- Hook + ada -- ArchDepthA + adb -- ArchDepthB create-glyph "smcpEzh.\(suffix)" : glyph-proc include : MarkSet.e - include : EzhShape [DivFrame 1] XH 0 (isCursive -- isCursive) (isSerifed -- isSerifed) + include : EzhShape [DivFrame 1] XH 0 + isCursive -- isCursive + isSerifed -- isSerifed + hook -- Hook + ada -- ArchDepthA + adb -- ArchDepthB create-glyph "ezh.\(suffix)" : glyph-proc include : MarkSet.p - include : EzhShape [DivFrame 1] XH Descender (isCursive -- isCursive) (isSerifed -- isSerifed) + include : EzhShape [DivFrame 1] XH Descender + isCursive -- isCursive + isSerifed -- isSerifed + hook -- Hook + ada -- SmallArchDepthA + adb -- SmallArchDepthB create-glyph "ezhTail.\(suffix)" : glyph-proc include : MarkSet.p @@ -132,15 +144,16 @@ glyph-block Letter-Latin-Ezh : begin local [object yMidBar] : include : EzhShape [DivFrame 1] XH b isCursive -- isCursive isSerifed -- isSerifed + ada -- SmallArchDepthA + adb -- SmallArchDepthB terminalShape -- [HooklessTerminalShape 0.5] - local y : mix yMidBar b 0.5 include : dispiro widths.rhs g4.down.mid (RightSB - OX) y [heading Downward] arcvh flat [mix SB RightSB 0.45] b - curl [mix SB RightSB 0.4] b + curl [mix SB RightSB 0.4] b archv g4 (SB + [HSwToV Stroke]) [mix (Descender + Stroke) b 0.5] arcvh @@ -152,6 +165,9 @@ glyph-block Letter-Latin-Ezh : begin include : EzhShape [DivFrame 1] XH Descender isCursive -- isCursive isSerifed -- isSerifed + hook -- Hook + ada -- SmallArchDepthA + adb -- SmallArchDepthB terminalShape -- CurlyTailTerminalShape create-glyph "ezhRetroflexHook.\(suffix)" : glyph-proc @@ -159,39 +175,62 @@ glyph-block Letter-Latin-Ezh : begin include : EzhShape [DivFrame 1] XH 0 isCursive -- isCursive isSerifed -- isSerifed + hook -- SHook + ada -- SmallArchDepthA + adb -- SmallArchDepthB terminalShape -- RetroflexConnectionTerminal - include : RetroflexHook.l SB 0 (yAttach -- Hook) + include : RetroflexHook.l + x -- SB + y -- 0 + yAttach -- SHook create-glyph "ezhPalatalHook.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityM 1 include : df.markSet.p local dfSub : DivFrame (0.75 * para.diversityM) 2 - local p : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB) + local ada : dfSub.archDepthA SmallArchDepth dfSub.mvs + local adb : dfSub.archDepthB SmallArchDepth dfSub.mvs local [object yMidBar] : include : EzhShape dfSub XH Descender isCursive -- isCursive isSerifed -- isSerifed sw -- dfSub.mvs - local y : [mix yMidBar Descender p] - 0.5 * dfSub.mvs + hook -- Hook + ada -- ada + adb -- adb + local y : [mix yMidBar Descender : pArc ada adb] - 0.5 * dfSub.mvs include : PalatalHook.r - x -- df.rightSB - y -- y - xLink -- dfSub.rightSB - refSw -- dfSub.mvs + x -- df.rightSB + y -- y + xLink -- dfSub.rightSB + refSw -- dfSub.mvs maskOut -- [intersection [MaskBelow y] [MaskLeft dfSub.rightSB]] if [not isSerifed] : begin + create-glyph "ezh/phoneticRight.\(suffix)" : glyph-proc + include : MarkSet.p + include : EzhShape [DivFrame 1] XH Descender + pLeft -- (4/15) + isCursive -- isCursive + isSerifed -- isSerifed + hook -- Hook + ada -- SmallArchDepthA + adb -- SmallArchDepthB + create-glyph "ezhPalatalHook/phoneticRight.\(suffix)" : glyph-proc include : MarkSet.p - local p : SmallArchDepthB / (SmallArchDepthA + SmallArchDepthB) local [object yMidBar] : include : EzhShape [DivFrame 1] XH Descender + pLeft -- (4/15) isCursive -- isCursive isSerifed -- isSerifed - local y : [mix yMidBar Descender p] - HalfStroke + hook -- Hook + ada -- SmallArchDepthA + adb -- SmallArchDepthB + local y : [mix yMidBar Descender : pArc SmallArchDepthA SmallArchDepthB] - HalfStroke include : PalatalHook.r - x -- [mix SB RightSB (4/3)] - y -- y - xLink -- RightSB - refSw -- [AdviceStroke 3] + x -- [mix SB RightSB (4/3)] + y -- y + xLink -- RightSB + refSw -- [AdviceStroke 3] maskOut -- [intersection [MaskBelow y] [MaskLeft RightSB]] select-variant 'Ezh' 0x1B7 @@ -201,16 +240,21 @@ glyph-block Letter-Latin-Ezh : begin select-variant 'ezhCurlyTail' 0x293 (follow -- 'ezh') select-variant 'ezhRetroflexHook' 0x1D9A (follow -- 'ezh') select-variant 'ezhPalatalHook' 0x1DF18 (follow -- 'ezh') - select-variant 'ezh/phoneticRight' (shapeFrom -- 'ezh') + select-variant 'ezh/phoneticRight' select-variant 'ezhPalatalHook/phoneticRight' (follow -- 'ezh/phoneticRight') alias 'cyrl/abk/Dze' 0x4E0 'Ezh' alias 'cyrl/abk/dze' 0x4E1 'ezh' - # Variants for Ezh doesn't make sense for Lyogh. + # Variants for Ezh don't make sense for Lyogh. create-glyph 'lyogh.serifless' : glyph-proc include : MarkSet.bp - include : EzhShape [DivFrame 1] XH Descender 0.4 + include : EzhShape [DivFrame 1] XH Descender + pLeft -- 0.4 + isSerifed -- false + hook -- Hook + ada -- SmallArchDepthA + adb -- SmallArchDepthB include : VBar.l SB (XH * 0.1) Ascender create-glyph 'lyogh.hooky' : glyph-proc @@ -221,7 +265,13 @@ glyph-block Letter-Latin-Ezh : begin create-glyph 'lyoghRTail.serifless' : glyph-proc include : MarkSet.b - include : EzhShape [DivFrame 1] XH 0 0.4 + include : EzhShape [DivFrame 1] XH 0 + pLeft -- 0.4 + isSerifed -- false + hook -- SHook + ada -- SmallArchDepthA + adb -- SmallArchDepthB + terminalShape -- RetroflexConnectionTerminal include : VBar.l SB 0 Ascender include : RetroflexHook.lExt SB 0 @@ -232,29 +282,29 @@ glyph-block Letter-Latin-Ezh : begin select-variant 'lyoghRTail' 0x1DF05 (follow -- 'lyogh') - # Used by ampersand only - # Current reversed Ezh is generated using a auto-build. + # Used by ampersand only. + # Current reversed Ezh is generated using an auto-build. glyph-block-export RevEzhShape define flex-params [RevEzhShape] : glyph-proc local-parameter : top local-parameter : bot - local-parameter : pLeft -- 0.075 - local-parameter : pRight -- 0.8 - local-parameter : hookless -- false - local-parameter : ada -- SmallArchDepthA - local-parameter : adb -- SmallArchDepthB + local-parameter : pLeft -- 0.075 + local-parameter : pRight -- 0.8 + local-parameter : hookless -- false + local-parameter : ada -- SmallArchDepthA + local-parameter : adb -- SmallArchDepthB local-parameter : diagCoeff -- 1.2 - local-parameter : pyBar -- 0.6 + local-parameter : pyBar -- 0.6 local cor : HSwToV diagCoeff local yMidBar : RevEzhShape.yMidBar top bot pyBar local ezhRight : mix SB RightSB pRight - local ezhLeft : mix SB RightSB pLeft + local ezhLeft : mix SB RightSB pLeft include : HBar.t ezhLeft RightSB top include : dispiro - corner ezhLeft (top - Stroke) [widths.lhs (Stroke / HVContrast)] - corner ezhRight yMidBar [widths.rhs (Stroke / HVContrast)] + corner ezhLeft (top - Stroke) [widths.lhs : Stroke / HVContrast] + corner ezhRight yMidBar [widths.rhs : Stroke / HVContrast] include : dispiro widths.lhs diff --git a/packages/font-glyphs/src/letter/latin-ext/upper-ae-oe.ptl b/packages/font-glyphs/src/letter/latin-ext/upper-ae-oe.ptl index 1a60200019..74854fc34d 100644 --- a/packages/font-glyphs/src/letter/latin-ext/upper-ae-oe.ptl +++ b/packages/font-glyphs/src/letter/latin-ext/upper-ae-oe.ptl @@ -82,7 +82,7 @@ glyph-block Letter-Latin-Upper-AE-OE : begin include : dispiro widths.rhs sw flat df.leftSB 0 [heading Upward] - curl pre@ (post@ <-> yMidDepth) + curl df.leftSB (top - yMidDepth) arcvh straight.right.end eleft top [heading Rightward] diff --git a/packages/font-glyphs/src/letter/latin/c.ptl b/packages/font-glyphs/src/letter/latin/c.ptl index 866649c857..a6c1c251d9 100644 --- a/packages/font-glyphs/src/letter/latin/c.ptl +++ b/packages/font-glyphs/src/letter/latin/c.ptl @@ -106,7 +106,7 @@ glyph-block Letter-Latin-C : begin [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB XH sw Hook __ : list [g4 RightSB (XH - Hook) [widths.lhs sw]] [hookstart XH (sw -- sw)] flatside.ld SB 0 XH SmallArchDepthA SmallArchDepthB - CurlyTail.n fine 0 RightSB 0 0 (yLoopTop -- XH * 0.45) + CurlyTail.n fine 0 RightSB 0 0 (yLoopTop -- (XH * 0.45)) glyph-block-export CLetterForm define [CLetterForm] : with-params [df sty styBot top bot [ada ArchDepthA] [adb ArchDepthB] [hook Hook] [sw Stroke] [ob nothing]] : namespace @@ -205,7 +205,7 @@ glyph-block Letter-Latin-C : begin local top : Width - SB local p : mix 1 (Width / UPM) 0.5 include : PointingTo Width XH Width 0 : function [] : glyph-proc - local lf : CLetterForm df sty styBot top 0 (hook -- Hook * p) + local lf : CLetterForm df sty styBot top 0 (hook -- (Hook * p)) include : lf.full include : FlipAround df.middle (top / 2) include : Translate 0 (SB / 2) @@ -213,7 +213,7 @@ glyph-block Letter-Latin-C : begin create-glyph "cyrl/esWide.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityT 3 include : df.markSet.e - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc local lf : CLetterForm df sty styBot XH desc ada -- [df.archDepthA SmallArchDepth Stroke] @@ -356,10 +356,10 @@ glyph-block Letter-Latin-C : begin derive-glyphs 'cyrl/The' 0x4AA "cyrl/Es" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc include : difference - VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] + VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke OShapeOutline.NoOvershoot CAP 0 SB RightSB Stroke ArchDepthA ArchDepthB derive-multi-part-glyphs 'cyrl/The.BSH' null { 'cyrl/Es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc @@ -373,10 +373,10 @@ glyph-block Letter-Latin-C : begin derive-glyphs 'cyrl/the' 0x4AB "cyrl/es" : function [src gr] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc include : difference - VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] + VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke OShapeOutline.NoOvershoot XH 0 SB RightSB Stroke SmallArchDepthA SmallArchDepthB derive-multi-part-glyphs 'cyrl/the.BSH' null { 'cyrl/es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc @@ -441,13 +441,13 @@ glyph-block Letter-Latin-C : begin flat [xBot df] bot [widths.center.heading cofine Upward] curl df.middle [mix bot top 0.5] [widths.center.heading swBarFine Upward] - define [OutlineMask df] : spiro-outline - curl (df.leftSB + HalfStroke) (post@ <-> SmallArchDepthA) - arch.rhs (sw -- Stroke) (tMask - HalfStroke) - flat (df.rightSB - HalfStroke) (pre@ <-> SmallArchDepthB) - curl pre@ (post@ <+> SmallArchDepthA) - arch.rhs (sw -- Stroke) (bMask + HalfStroke) - flat post@ (pre@ <+> SmallArchDepthB) + define [OutlineMask df] : lift-@ : spiro-outline + curl (@x1 = df.leftSB + HalfStroke) (@y2 - SmallArchDepthA) + arch.rhs (sw -- Stroke) (@y2 = tMask - HalfStroke) + flat (@x3 = df.rightSB - HalfStroke) (@y2 - SmallArchDepthB) + curl @x3 (@y5 + SmallArchDepthA) + arch.rhs (sw -- Stroke) (@y5 = bMask + HalfStroke) + flat @x1 (@y5 + SmallArchDepthB) define [InterruptMask df] : begin define gap : Math.max (XH / 8) [AdviceStroke2 6 6 XH] diff --git a/packages/font-glyphs/src/letter/latin/k.ptl b/packages/font-glyphs/src/letter/latin/k.ptl index 391ec03a36..2cd0bb6429 100644 --- a/packages/font-glyphs/src/letter/latin/k.ptl +++ b/packages/font-glyphs/src/letter/latin/k.ptl @@ -26,9 +26,9 @@ glyph-block Letter-Latin-K : begin local kshRight : right + [KBalanceRight true straightBar] local serifLengthAdj : Ok + [HSwToV stroke] return : shape.rSideJut - x -- kshRight - serifLengthAdj + x -- (kshRight - serifLengthAdj) y -- 0 - jut -- Jut + serifLengthAdj + jut -- (Jut + serifLengthAdj) define [KSlabs mode top left right stroke straightBar] : glyph-proc local Ok : KO mode true top stroke @@ -404,7 +404,7 @@ glyph-block Letter-Latin-K : begin create-glyph "KDescender.\(suffix)" : glyph-proc include : MarkSet.capital include : KBaseShape Stroke CAP CyrDescender - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) create-glyph "KStroke.\(suffix)" : glyph-proc include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS @@ -432,7 +432,7 @@ glyph-block Letter-Latin-K : begin create-glyph "smcpKDescender.\(suffix)" : glyph-proc include : MarkSet.e include : KBaseShape Stroke XH CyrDescender - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) create-glyph "smcpKVBar.\(suffix)" : glyph-proc include : MarkSet.e @@ -448,14 +448,16 @@ glyph-block Letter-Latin-K : begin if slabLB : include : UpperKLBSerif CAP Stroke xBarLeft slabLB define [BashkirKaShape df top] : glyph-proc - local left : if SLAB ([mix SB RightSB 0.35] - [HSwToV : 0.5 * df.mvs]) [mix SB RightSB 0.2] + local left : if SLAB + [mix df.leftSB df.rightSB 0.35] - [HSwToV : 0.5 * df.mvs] + mix df.leftSB df.rightSB : if (df.div > 1) 0.25 0.2 local leftNB : left - [KBalance SLAB straightBar] - local xTopBarLeftEnd : mix 0 SB [if SLAB 0.25 0.375] + local xTopBarLeftEnd : mix 0 df.leftSB : if SLAB 0.25 0.375 local sw : AdviceStroke 3 - include : HBar.t xTopBarLeftEnd (Stroke * 0.1 + left) top + include : HBar.t xTopBarLeftEnd (left + 0.1 * Stroke) top include : VBar.l left 0 top sw - include : LegsImpl false leftNB RightSB sw top SLAB slabLegs + include : LegsImpl false leftNB df.rightSB sw top SLAB slabLegs if SLAB : begin include : VSerif.dl xTopBarLeftEnd top VJut Math.min (VJutStroke * df.mvs / Stroke) (0.625 * (left - xTopBarLeftEnd)) @@ -463,12 +465,12 @@ glyph-block Letter-Latin-K : begin if slabLB : include : UpperKLBSerif top sw left slabLB create-glyph "cyrl/KaBashkir.\(suffix)" : glyph-proc - define df : include : DivFrame 1 + define df : include : DivFrame para.diversityT include : df.markSet.capital include : BashkirKaShape df CAP create-glyph "cyrl/kaBashkir.\(suffix)" : glyph-proc - define df : include : DivFrame 1 + define df : include : DivFrame para.diversityT include : df.markSet.e include : BashkirKaShape df XH @@ -506,7 +508,7 @@ glyph-block Letter-Latin-K : begin create-glyph "kDescender.\(suffix)" : glyph-proc include : MarkSet.b include : kBaseShape CyrDescender - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) create-glyph "kPalatalHook.\(suffix)" : glyph-proc include : MarkSet.b diff --git a/packages/font-glyphs/src/letter/latin/lower-e.ptl b/packages/font-glyphs/src/letter/latin/lower-e.ptl index a0cf05b3ff..21e07e3311 100644 --- a/packages/font-glyphs/src/letter/latin/lower-e.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-e.ptl @@ -135,7 +135,7 @@ glyph-block Letter-Latin-Lower-E : begin tailSlab -- tailSlab define offset : Width * (df.div - divSub) if fDesc : begin - local desc : (-LongJut) + HalfStroke + local desc : (-LongVJut) + HalfStroke include : ExtendBelowBaseAnchors desc include : difference VBar.m dfSub.middle desc (stroke + O) [AdviceStroke 3.5 df.div] @@ -192,7 +192,7 @@ glyph-block Letter-Latin-Lower-E : begin deltaX : function [rt] 0 ry : function [rt] : 1/24 + rt + (1/2 - rt) * (3/8) deltaY : function [rt] (-0.25 * [mix fine markStroke rt]) - modifier : function [rt] : widths.rhs [mix fine markStroke : Math.pow rt 2] + modifier : function [rt] : widths.rhs [mix fine markStroke : rt ** 2] g4.down.mid (RightSB - extL) (-0.75 * depth) [widths.rhs.heading markStroke {.x HVContrast .y turnSlope}] arcvh [widths.rhs markStroke] g4 (RightSB + [mix (-extL) extR (11/16)]) (-depth + O) [heading Rightward] diff --git a/packages/font-glyphs/src/letter/latin/lower-t.ptl b/packages/font-glyphs/src/letter/latin/lower-t.ptl index 04d0e13e81..2c4bd93625 100644 --- a/packages/font-glyphs/src/letter/latin/lower-t.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-t.ptl @@ -21,7 +21,7 @@ glyph-block Letter-Latin-Lower-T : begin define SYM-PR-BALANCED 3 define dfNarrowT : DivFrame para.diversityF - define [xSmallTBarLeftT df] : df.middle - TBalance * df.div * df.div - [HSwToV HalfStroke] + define [xSmallTBarLeftT df] : df.middle - TBalance * (df.div ** 2) - [HSwToV HalfStroke] define [xSmallTCrossRefT df] : [xSmallTBarLeftT df] + df.div * TBalance2 + [HSwToV HalfStroke] define yCrossBar XH diff --git a/packages/font-glyphs/src/letter/latin/o.ptl b/packages/font-glyphs/src/letter/latin/o.ptl index 3aafd209c6..c6aaf62fd6 100644 --- a/packages/font-glyphs/src/letter/latin/o.ptl +++ b/packages/font-glyphs/src/letter/latin/o.ptl @@ -193,7 +193,7 @@ glyph-block Letter-Latin-O : begin local arcXR : df.leftSB + innerDist * (3 / 4) + [HSwToV : 4 * df.mvs] local heightGap : Math.min (df.mvs + (CAP - df.mvs * 4) / 5) (innerDist / 4 + df.mvs) local heightInner : CAP - 2 * heightGap - local smInner : clamp (df.mvs * 1.5) (0.499 * heightInner) (ArchDepth * heightInner / CAP) + local smInner : clamp (df.mvs * 1.5) (heightInner / 2 - TINY) (ArchDepth * heightInner / CAP) local adaInner : [ArchDepthAOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div local adbInner : [ArchDepthBOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap @@ -217,10 +217,10 @@ glyph-block Letter-Latin-O : begin local heightGap : Math.min (df.mvs + (CAP - df.mvs * 6) / 7) (innerDist / 6 + df.mvs) local heightInner1 : CAP - 2 * heightGap local heightInner2 : CAP - 4 * heightGap - local smInner1 : clamp (df.mvs * 1.5) (0.499 * heightInner1) (ArchDepth * heightInner1 / CAP) + local smInner1 : clamp (df.mvs * 1.5) (heightInner1 / 2 - TINY) (ArchDepth * heightInner1 / CAP) local adaInner1 : [ArchDepthAOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div local adbInner1 : [ArchDepthBOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div - local smInner2 : clamp (df.mvs * 1.5) (0.499 * heightInner2) (ArchDepth * heightInner2 / CAP) + local smInner2 : clamp (df.mvs * 1.5) (heightInner2 / 2 - TINY) (ArchDepth * heightInner2 / CAP) local adaInner2 : [ArchDepthAOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div local adbInner2 : [ArchDepthBOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap @@ -284,18 +284,18 @@ glyph-block Letter-Latin-O : begin create-glyph 'OPolish' 0xA7C0 : glyph-proc include [refer-glyph 'O'] AS_BASE include : MarkSet.capital - include : ExtendAboveBaseAnchors (CAP + LongJut - 0.5 * Stroke) - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) - include : VBar.m Middle CAP (CAP + LongJut - 0.5 * Stroke) - include : VBar.m Middle (-LongJut + 0.5 * Stroke) 0 + include : ExtendAboveBaseAnchors (CAP + LongVJut - HalfStroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) + include : VBar.m Middle CAP (CAP + LongVJut - HalfStroke) + include : VBar.m Middle (-LongVJut + HalfStroke) 0 create-glyph 'oPolish' 0xA7C1 : glyph-proc include [refer-glyph 'o'] AS_BASE include : MarkSet.e - include : ExtendAboveBaseAnchors (XH + LongJut - 0.5 * Stroke) - include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) - include : VBar.m Middle XH (XH + LongJut - 0.5 * Stroke) - include : VBar.m Middle (-LongJut + 0.5 * Stroke) 0 + include : ExtendAboveBaseAnchors (XH + LongVJut - HalfStroke) + include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke) + include : VBar.m Middle XH (XH + LongVJut - HalfStroke) + include : VBar.m Middle (-LongVJut + HalfStroke) 0 derive-composites 'oRetroflexHook' 0x1DF1B 'o' : RetroflexHook.l x -- [mix [arch.adjust-x.bot Middle] SB 0.75] diff --git a/packages/font-glyphs/src/letter/latin/s.ptl b/packages/font-glyphs/src/letter/latin/s.ptl index f236a19639..ad18c0852b 100644 --- a/packages/font-glyphs/src/letter/latin/s.ptl +++ b/packages/font-glyphs/src/letter/latin/s.ptl @@ -43,7 +43,7 @@ glyph-block Letter-Latin-S : begin local adjustFactor : 0.1 * (df.rightSB - df.leftSB) / height return : list ~~~ [alsoThru 0.5 (0.7 + adjustFactor)] - g4 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center ess] + alsoThru.g4 0.5 0.5 [widths.center ess] ~~~ [alsoThru 0.5 (0.3 - adjustFactor)] define [SStrokeImpl df top bot st sb stroke refSwEss] : begin @@ -118,15 +118,15 @@ glyph-block Letter-Latin-S : begin define soStart : stroke - swStart define soEnd : stroke - swEnd define archDepth : AdviceSArchDepth top (-1) stroke - return : dispiro + return : lift-@ : dispiro widths.lhs fine g4 (df.rightSB + OX / 4 - [HSwToV soStart]) (top - hook) hookstart (top - soStart) (sw -- fine) - g4 (df.leftSB + oXLeftTop + offsetLT.x) (top - archDepth + offsetLT.y) - ~~~ [virt pre@ (top - archDepth)] - ~~~ [g4 [pre@mix@post 0.5 offsetC.x] [pre@mix@post 0.5 offsetC.y] [widths.center stroke]] - ~~~ [virt post@ (archDepth)] - g4 (df.rightSB - SOBot - offsetRB.x) (archDepth + offsetRB.y) [widths.rhs fine] + g4 @x1 (@y1 + offsetLT.y) + virt (@x1 = df.leftSB + oXLeftTop + offsetLT.x) (@y1 = top - archDepth) + ~~~ [g4 ([mix @x1 @x2 0.5] + offsetC.x) ([mix @y1 @y2 0.5] + offsetC.y) [widths.center stroke]] + virt (@x2 = df.rightSB - SOBot - offsetRB.x) (@y2 = archDepth) + g4 @x2 (@y2 + offsetRB.y) [widths.rhs fine] hookend soEnd (sw -- fine) g4 (df.leftSB + SOBot + [HSwToV soEnd]) (hook) [widths.rhs fine] @@ -518,13 +518,13 @@ glyph-block Letter-Latin-S : begin define [DollarMask df stroke] : begin define archDepthA : AdviceSArchDepth (top - bot) (-1) stroke define archDepthB : AdviceSArchDepth (top - bot) (+1) stroke - return : spiro-outline - curl (df.leftSB + 0.5 * stroke) (post@ <-> archDepthA) - arch.rhs (sw -- stroke) (top - 0.5 * stroke) - flat (df.rightSB - 0.5 * stroke) (pre@ <-> archDepthB) - curl pre@ (post@ <+> archDepthA) - arch.rhs (sw -- stroke) (bot + 0.5 * stroke) - flat post@ (pre@ <+> archDepthB) + return : lift-@ : spiro-outline + curl (@x1 = df.leftSB + 0.5 * stroke) (@y2 - archDepthA) + arch.rhs (sw -- stroke) (@y2 = top - 0.5 * stroke) + flat (@x3 = df.rightSB - 0.5 * stroke) (@y2 - archDepthB) + curl @x3 (@y5 + archDepthA) + arch.rhs (sw -- stroke) (@y5 = bot + 0.5 * stroke) + flat @x1 (@y5 + archDepthB) define [InterruptMask df] : begin local gap : (swBarThick / Stroke * EssUpper) + [Math.max ((top - bot) / 6) [AdviceStroke2 3 3 (top - bot)]] diff --git a/packages/font-glyphs/src/letter/latin/u.ptl b/packages/font-glyphs/src/letter/latin/u.ptl index 6750f19795..2023109056 100644 --- a/packages/font-glyphs/src/letter/latin/u.ptl +++ b/packages/font-glyphs/src/letter/latin/u.ptl @@ -297,12 +297,12 @@ glyph-block Letter-Latin-U : begin create-glyph "uDieresisSidewaysBase.\(suffix)" : glyph-proc local df : DivFrame (XH / Width) 2 (XH * 0.1 / SB) include : df.markSet.e - local ww : Width * para.diversityM + local ww : Width * para.diversityT set-width ww set-base-anchor 'cvDecompose' 0 0 include : PointingTo ww XH ww 0 : function [] : glyph-proc - include : Base df (ww - SB - 0.75 * para.diversityM * AccentHeight) Stroke - include : Slabs df (ww - SB - 0.75 * para.diversityM * AccentHeight) + include : Base df (ww - SB - 0.75 * para.diversityT * AccentHeight) Stroke + include : Slabs df (ww - SB - 0.75 * para.diversityT * AccentHeight) include : Translate 0 (SB / 2) select-variant 'U' 'U' @@ -422,7 +422,7 @@ glyph-block Letter-Latin-U : begin # Sideways dieresis for U+1D1E derive-glyphs "uDieresisSidewaysMark" null "dieresisAboveAlwaysUpright" : function [gns] : glyph-proc - local ww : Width * para.diversityM + local ww : Width * para.diversityT set-width 0 set-mark-anchor 'cvDecompose' 0 0 include : PointingTo ww XH ww 0 : function [] : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/upper-a.ptl b/packages/font-glyphs/src/letter/latin/upper-a.ptl index 4833cf1041..73982a6bd1 100644 --- a/packages/font-glyphs/src/letter/latin/upper-a.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-a.ptl @@ -39,11 +39,11 @@ glyph-block Letter-Latin-Upper-A : begin include : VShapeOutline df bodyShape top sw include : FlipAround df.middle (top / 2) [Just BODY-ROUND-TOP] : spiro-outline - corner df.leftSB 0 - curl pre@ (post@ <-> ArchDepthA) - arch.rhs top (sw -- sw) - flat post@ (pre@ <-> ArchDepthB) - corner df.rightSB 0 + corner df.leftSB 0 + curl df.leftSB (top - ArchDepthA) + arch.rhs (sw -- sw) top + flat df.rightSB (top - ArchDepthB) + corner df.rightSB 0 export : define [Outer df bodyShape top sw] : match bodyShape ([Just BODY-CURLY] || [Just BODY-STRAIGHT]) : new-glyph : glyph-proc @@ -51,11 +51,11 @@ glyph-block Letter-Latin-Upper-A : begin include : FlipAround df.middle (top / 2) [Just BODY-ROUND-TOP] : dispiro widths.rhs sw - flat df.leftSB 0 [heading Upward] - curl pre@ (post@ <-> ArchDepthA) - arch.rhs top (sw -- sw) - flat post@ (pre@ <-> ArchDepthB) - curl df.rightSB 0 [heading Downward] + flat df.leftSB 0 [heading Upward] + curl df.leftSB (top - ArchDepthA) + arch.rhs (sw -- sw) top + flat df.rightSB (top - ArchDepthB) + curl df.rightSB 0 [heading Downward] define [CrossBar df bodyShape top sw] : begin define yBar : BarPos bodyShape slabKind top diff --git a/packages/font-glyphs/src/letter/latin/upper-h.ptl b/packages/font-glyphs/src/letter/latin/upper-h.ptl index 66fccc93e0..f50a6f97be 100644 --- a/packages/font-glyphs/src/letter/latin/upper-h.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-h.ptl @@ -74,17 +74,17 @@ glyph-block Letter-Latin-Upper-H : begin define [EnGheShape Body df top slabType vSlab] : glyph-proc local sw : AdviceStroke 2.75 - local xRightBar : Math.min (Width - df.leftSB) : if SLAB - [mix df.rightSB df.leftSB 0.35] + [HSwToV : 0.5 * df.mvs] - mix df.rightSB df.leftSB 0.2 - local xTopRight : mix df.width df.rightSB [if SLAB 0.25 0.375] + local xm : Math.min (Width - df.leftSB) : if SLAB + [mix df.leftSB df.rightSB 0.625] + [HSwToV : 0.25 * df.mvs] + mix df.leftSB df.rightSB : if (df.div > 1) (2 / 3) (3 / 4) + local xTopBarRightEnd : mix df.width df.rightSB : if vSlab 0.25 0.375 - include : Body df.leftSB xRightBar top sw - include : HBar.t (xRightBar + O) xTopRight top + include : Body df.leftSB xm top sw + include : HBar.t (xm + O) xTopBarRightEnd top - include : HSerifs slabType top 0 df.leftSB xRightBar sw + include : HSerifs slabType top 0 df.leftSB xm sw if vSlab - then : include : VSerif.dr xTopRight top VJut (df.mvs / HVContrast) + then : include : VSerif.dr xTopBarRightEnd top VJut (df.mvs / HVContrast) else : eject-contour 'serifRT' define [HwairShape df top yend slabType] : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/upper-m.ptl b/packages/font-glyphs/src/letter/latin/upper-m.ptl index 1504826dda..e415467580 100644 --- a/packages/font-glyphs/src/letter/latin/upper-m.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-m.ptl @@ -95,7 +95,8 @@ glyph-block Letter-Latin-Upper-M : begin define [CyrSoftEmShape] : with-params [top df form slabType slanted vSlab] : glyph-proc local subDf : df.slice 4 3 local sidesSlope : if slanted 0.04 0 - local xRightTop : subDf.rightSB - top * sidesSlope + local xTopRight : subDf.rightSB - top * sidesSlope + local xTopBarRightEnd : mix df.width df.rightSB : if vSlab 0.25 0.375 local swSideBot : match form [Just FORM-SAN-SMALL] : AdviceStroke 2.5 subDf.div @@ -106,8 +107,8 @@ glyph-block Letter-Latin-Upper-M : begin include : MShape top subDf form slabType slanted (kMidHang -- df.div) - include : HBar.t xRightTop df.rightSB top swSideBot - if vSlab : include : VSerif.dr df.rightSB top VJut (swSideBot * VJutStroke / Stroke) + include : HBar.t xTopRight xTopBarRightEnd top swSideBot + if vSlab : include : VSerif.dr xTopBarRightEnd top VJut (VJutStroke * swSideBot / Stroke) define MConfig : SuffixCfg.combine SuffixCfg.weave @@ -154,8 +155,8 @@ glyph-block Letter-Latin-Upper-M : begin include : LeaningAnchor.Below.VBar.l df.leftSB include : MShape XH df form slab slanted - define cyrSoftEmDf : DivFrame [mix 1 para.diversityM 2] 4 - define cyrSoftemDf : DivFrame [mix 1 para.diversityM 1.5] 4 + define cyrSoftEmDf : DivFrame (para.diversityM ** 2) 4 + define cyrSoftemDf : DivFrame (para.diversityT * para.diversityM) 4 DefineSelectorGlyph "cyrl/EmSoft" suffix cyrSoftEmDf 'capital' DefineSelectorGlyph "cyrl/emSoft" suffix cyrSoftemDf 'e' diff --git a/packages/font-glyphs/src/letter/latin/upper-t.ptl b/packages/font-glyphs/src/letter/latin/upper-t.ptl index d6cf3d817c..28666209cc 100644 --- a/packages/font-glyphs/src/letter/latin/upper-t.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-t.ptl @@ -33,7 +33,7 @@ glyph-block Letter-Latin-Upper-T : begin define [TjeShape df top doTopSerifs] : glyph-proc local left : [mix df.leftSB df.rightSB 0.3] + OX - local mid : left + (HVContrast / 2) * df.mvs + local mid : left + [HSwToV : df.mvs / 2] local xTopBarLeft : df.leftSB - SideJut local xTopBarRightSym : 2 * left + [HSwToV df.mvs] - xTopBarLeft @@ -41,13 +41,13 @@ glyph-block Letter-Latin-Upper-T : begin include : tagged 'strokeLT' : HBar.t xTopBarLeft mid top df.mvs include : tagged 'strokeRT' : HBar.t mid xTopBarRight top df.mvs include : UpwardHookShape - left -- left - right -- df.rightSB + left -- left + right -- df.rightSB ybegin -- top - yend -- (top / 2) - ada -- (SmallArchDepthA * 0.6 * df.div) - adb -- (SmallArchDepthB * 0.6 * df.div) - sw -- df.mvs + yend -- (top / 2) + ada -- (SmallArchDepthA * 0.6 * df.div) + adb -- (SmallArchDepthB * 0.6 * df.div) + sw -- df.mvs if doTopSerifs : begin include : tagged 'serifRT' : VSerif.dr xTopBarRight top VJut @@ -92,8 +92,8 @@ glyph-block Letter-Latin-Upper-T : begin set-base-anchor 'bottomRight' (df.middle + [HSwToV HalfStroke]) 0 include : TShape df CAP doST doSB include : CyrDescender.rSideJut - x -- (df.middle + [HSwToV HalfStroke]) - y -- 0 + x -- (df.middle + [HSwToV HalfStroke]) + y -- 0 jut -- [if doSB MidJutCenter Jut] create-glyph "TStroke.\(suffix)" : glyph-proc @@ -129,7 +129,7 @@ glyph-block Letter-Latin-Upper-T : begin create-glyph "currency/tengeSign.\(suffix)" : glyph-proc local df : include : DivFrame div include : df.markSet.capital - local gap : Math.max (CAP * 0.1) [AdviceStroke2 2 6 CAP] + local gap : Math.max (CAP * 0.1) : AdviceStroke2 2 6 CAP include : HBar.t [TLeftX df] [TRightX df] CAP OverlayStroke include : TShape df (CAP - gap - OverlayStroke) doST doSB @@ -138,8 +138,8 @@ glyph-block Letter-Latin-Upper-T : begin include : df.markSet.e include : TShape df XH doST doSB include : CyrDescender.rSideJut - x -- (df.middle + [HSwToV HalfStroke]) - y -- 0 + x -- (df.middle + [HSwToV HalfStroke]) + y -- 0 jut -- [if doSB MidJutCenter Jut] create-glyph "TRTailBR.\(suffix)" : glyph-proc diff --git a/packages/font-glyphs/src/letter/shared.ptl b/packages/font-glyphs/src/letter/shared.ptl index 5fbdc66cd5..d0d6cb8e9f 100644 --- a/packages/font-glyphs/src/letter/shared.ptl +++ b/packages/font-glyphs/src/letter/shared.ptl @@ -37,7 +37,7 @@ glyph-block Letter-Shared : begin derive-multi-part-glyphs dst u { sourceGid 'commaTR' } : function [gns gr] : glyph-proc local { base comma } gns define baseGlyph : query-glyph base - define commaOffset : fallback offset : (Width / 2) * [Math.pow (baseGlyph.advanceWidth / Width * 2) (2/3)] + define commaOffset : fallback offset : (Width / 2) * ((baseGlyph.advanceWidth / Width * 2) ** (2/3)) include : refer-glyph comma include : ApparentTranslate commaOffset 0 include [refer-glyph base] AS_BASE ALSO_METRICS @@ -652,12 +652,12 @@ glyph-block Letter-Shared-Shapes : begin curl (cx + sign * (dxTailStart + dxDepth)) (cy + O + dyTailStart + dyDepth) define [superEllipse theta] : list - Math.pow [Math.cos theta] (2 / DiagTailSuperness) - Math.pow [Math.sin theta] (2 / DiagTailSuperness) + [Math.cos theta] ** (2 / DiagTailSuperness) + [Math.sin theta] ** (2 / DiagTailSuperness) define [superEllipseDerivative theta] : begin - local dc : (-2 / DiagTailSuperness) * [Math.sin theta] * [Math.pow [Math.cos theta] (2 / DiagTailSuperness - 1)] - local ds : (+2 / DiagTailSuperness) * [Math.cos theta] * [Math.pow [Math.sin theta] (2 / DiagTailSuperness - 1)] + local dc : (-2 / DiagTailSuperness) * [Math.sin theta] * ([Math.cos theta] ** (2 / DiagTailSuperness - 1)) + local ds : (+2 / DiagTailSuperness) * [Math.cos theta] * ([Math.sin theta] ** (2 / DiagTailSuperness - 1)) local h : Math.hypot dc ds return : list (dc / h) (ds / h) @@ -848,7 +848,7 @@ glyph-block Letter-Shared-Shapes : begin export : define [l] : with-params [x y xDepth yDepth [sw Stroke] [yExtension 0]] m - x -- x + [HSwToV : 0.5 * sw] + x -- (x + [HSwToV : 0.5 * sw]) y -- y xDepth -- xDepth yDepth -- yDepth @@ -857,7 +857,7 @@ glyph-block Letter-Shared-Shapes : begin export : define [r] : with-params [x y xDepth yDepth [sw Stroke] [yExtension 0]] m - x -- x - [HSwToV : 0.5 * sw] + x -- (x - [HSwToV : 0.5 * sw]) y -- y xDepth -- xDepth yDepth -- yDepth @@ -906,10 +906,10 @@ glyph-block Letter-Shared-Shapes : begin local xPos : x - [HSwToV : 0.5 * sw] + sj + sw * TanSlope * (DesignParameters.serifShiftX + 1) return : Impl xPos y xLink y yOverflow sw - # Descender of cyrillics + # Diacritical descender of cyrillics glyph-block-export CyrDescender define CyrDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc - local extension : 0.25 * Stroke - LongJut + local extension : 0.25 * Stroke - LongVJut include : ExtendBelowBaseAnchors (y + extension) include : union xLinkStroke xLink x yAttach sw @@ -917,7 +917,7 @@ glyph-block Letter-Shared-Shapes : begin glyph-block-export CyrTailDescender define CyrTailDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc - local extension : 0.25 * Stroke - LongJut + local extension : 0.25 * Stroke - LongVJut include : ExtendBelowBaseAnchors (y + extension) include : union xLinkStroke xLink x yAttach sw @@ -978,7 +978,7 @@ glyph-block Letter-Shared-Shapes : begin general left -- xm right -- df.rightSB - top -- top * 0.625 + df.mvs / 4 + top -- (top * 0.625 + df.mvs / 4) ada -- ArchDepthA adb -- ArchDepthB sw -- df.mvs diff --git a/packages/font-glyphs/src/marks/above.ptl b/packages/font-glyphs/src/marks/above.ptl index eb5a81d361..c80d0bb66f 100644 --- a/packages/font-glyphs/src/marks/above.ptl +++ b/packages/font-glyphs/src/marks/above.ptl @@ -911,7 +911,7 @@ glyph-block Mark-Above : begin local top aboveMarkTop local bot aboveMarkBot - local exp : Math.sqrt : 1 + [Math.pow ((top - bot) / markExtend) 2] + local exp : Math.sqrt : 1 + (((top - bot) / markExtend) ** 2) include : dispiro widths.center : markFine * 2 flat (markMiddle + markExtend) top @@ -967,7 +967,7 @@ glyph-block Mark-Above : begin local top aboveMarkTop local bot aboveMarkBot - local exp : Math.sqrt : 1 + [Math.pow (3 * markExtend / (top - bot)) 2] + local exp : Math.sqrt : 1 + ((3 * markExtend / (top - bot)) ** 2) include : dispiro widths.center : markFine * 2 flat (markMiddle - markExtend) bot diff --git a/packages/font-glyphs/src/meta/aesthetics.ptl b/packages/font-glyphs/src/meta/aesthetics.ptl index ae97d8d699..f7c5c7b594 100644 --- a/packages/font-glyphs/src/meta/aesthetics.ptl +++ b/packages/font-glyphs/src/meta/aesthetics.ptl @@ -103,6 +103,7 @@ export : define [calculateMetrics para] : begin define Jut para.jut define LongJut para.longjut define VJut para.vjut + define LongVJut : fallback para.longvjut LongJut define MidJutSide : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.5 define MidJutCenter : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.6 define AccentStackOffset para.accentStackOffset @@ -197,11 +198,11 @@ export : define [calculateMetrics para] : begin BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize - HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance - AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 - RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 - EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut - ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS + HBarPos OverlayPos LongJut LongVJut Jut VJut VJutStroke AccentStackOffset AccentWidth + AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance + TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 + WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius + SideJut ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT diff --git a/packages/font-glyphs/src/meta/macros.ptl b/packages/font-glyphs/src/meta/macros.ptl index edb89ad1f8..fa44b35778 100644 --- a/packages/font-glyphs/src/meta/macros.ptl +++ b/packages/font-glyphs/src/meta/macros.ptl @@ -7,17 +7,13 @@ define-operator "--" 890 'right' : syntax-rules define-operator "~>" 880 'right' : syntax-rules `(@l ~> @r) `{.left @l .right @r} -### The operator indicating a "delay" +### The operator indicating a "delay" for the knot controls. Equivalent to a call to [decor@]. define-operator prefix "~~~" : syntax-rules `(~~~ @x) : dirty `[decor@ @x] -### This operator is a method variant of (+) -define-operator infix "<+>" 350 'left' : syntax-rules - `(@l <+> @r) : dirty `[@l.op_add @r] - -### This operator is a method variant of (-) -define-operator infix "<->" 350 'left' : syntax-rules - `(@l <-> @r) : dirty `[@l.op_sub @r] +### Exponentiation operator +define-operator "**" 150 "right" : syntax-rules + `(@l ** @r) `[Math.pow @l @r] ### Macro for identity match define-macro Just : begin @@ -110,8 +106,8 @@ define-macro lift-@ : syntax-rules if unquoteDef : begin local {unquoteId rhs} unquoteDef local mapObj : fetchAtFormMappedObj unquoteId - set mapObj.def rhs addDeps mapObj rhs + set mapObj.def : transform rhs return mapObj.t # Handle usages @@ -384,7 +380,7 @@ define-macro glyph-block : syntax-rules PictTop PictBot BgOpTop BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth - SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut Jut VJut + SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut LongVJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper @@ -394,14 +390,14 @@ define-macro glyph-block : syntax-rules AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT WideUnicodeT VERY-FAR TINY] + define spiroFnImports `[g4 g2 corner flat curl virt close end straight g2c cg2 flatc ccurl widths disable-contrast heading unimportant important alsoThru alsoThruThem bezControls quadControls archv arcvh dispiro spiro-outline spiro-collect] - define booleFnImports `[union intersection difference with-knockout] + define spiroFnImportsAlways `[decor@ decor@@ decor@@@] - define drvCoordImports `[pre@ post@ pre@mix@post post@mix@pre pre@slope post@slope min@ max@ - decor@ decor@@ decor@@@ pre@tang-in post@tang-in pre@tang-out post@tang-out] + define booleFnImports `[union intersection difference with-knockout] dirty `[$GlyphBlocks$.push : lambda [$Capture_Ext$] : begin \\ $Capture_Ext$.$Exec$.defineGlyphBlock $Capture_Ext$ @blockName @@ -409,8 +405,8 @@ define-macro glyph-block : syntax-rules define [object @::[captureImports.filter : lambda [x] variableSet.(x)]] $Capture$ define [object @::[metricImports.filter : lambda [x] variableSet.(x)]] $Capture$.Metrics define [object @::[spiroFnImports.filter : lambda [x] variableSet.(x)]] $Capture$.SpiroFns + define [object @::spiroFnImportsAlways] $Capture$.SpiroFns define [object @::[booleFnImports.filter : lambda [x] variableSet.(x)]] $Capture$.BooleFns - define [object @::drvCoordImports] $Capture$.DerivedCoordinateFns * @body diff --git a/packages/font-glyphs/src/space/index.ptl b/packages/font-glyphs/src/space/index.ptl index ec6e6b604e..aa82d60d0f 100644 --- a/packages/font-glyphs/src/space/index.ptl +++ b/packages/font-glyphs/src/space/index.ptl @@ -57,7 +57,7 @@ glyph-block Spaces : begin # The following spaces has explicit em-number. They will follow the em-number # in quasiproportional, and identical to SPACE in monospace define [FractionEmSp name code d] : create-glyph name code : glyph-proc - local df : include : DivFrame [if (para.diversityII < 1) (2 / d) 1] + local df : include : DivFrame : if (para.diversityII < 1) (2 / d) 1 FractionEmSp 'threePerEmSp' 0x2004 3 FractionEmSp 'fourPerEmsp' 0x2005 4 diff --git a/packages/font-glyphs/src/symbol/arrow.ptl b/packages/font-glyphs/src/symbol/arrow.ptl index de66db8620..c35315ceff 100644 --- a/packages/font-glyphs/src/symbol/arrow.ptl +++ b/packages/font-glyphs/src/symbol/arrow.ptl @@ -30,8 +30,8 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 define kLongArrowSB : [DivFrame MosaicWidthScalar 4].leftSB / [DivFrame MosaicWidthScalar 2].leftSB # Diagonal arrow params - define diagPropX : 1 / [Math.pow 2 (1 / 4)] - define diagPropY : 1 / [Math.pow 2 (1 / 4)] + define diagPropX : 1 / (2 ** (1 / 4)) + define diagPropY : 1 / (2 ** (1 / 4)) define arrowDiagRSB : mix arrowMidX arrowRSB diagPropX define arrowDiagSB : mix arrowMidX arrowSB diagPropX define arrowDiagBot : mix arrowMidX arrowBot diagPropY @@ -701,8 +701,8 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 include : ShareAlikeArrow do "Bend and Angle arrows" - define bendL : mix arrowMidX arrowSB [Math.max (bendArrowHeadSize / (arrowMidX - arrowSB)) : Math.pow 0.6 (2 / MosaicWidthScalar)] - define bendR : mix arrowMidX arrowRSB [Math.max (bendArrowHeadSize / (arrowMidX - arrowSB)) : Math.pow 0.6 (2 / MosaicWidthScalar)] + define bendL : mix arrowMidX arrowSB : Math.max (bendArrowHeadSize / (arrowMidX - arrowSB)) (0.6 ** (2 / MosaicWidthScalar)) + define bendR : mix arrowMidX arrowRSB : Math.max (bendArrowHeadSize / (arrowMidX - arrowSB)) (0.6 ** (2 / MosaicWidthScalar)) define bendT : SymbolMid + bendArrowHeadSize * 2 define bendB : SymbolMid - bendArrowHeadSize * 2 diff --git a/packages/font-glyphs/src/symbol/counting-rod.ptl b/packages/font-glyphs/src/symbol/counting-rod.ptl index 505db126e7..1a0cd0932f 100644 --- a/packages/font-glyphs/src/symbol/counting-rod.ptl +++ b/packages/font-glyphs/src/symbol/counting-rod.ptl @@ -8,13 +8,14 @@ glyph-block Symbol-Counting-Rod : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - define rodDiv : mix 1 para.diversityM 2 - define rodDf : DivFrame rodDiv 5 - define rodSw rodDf.mvs - define hRodSw : AdviceStroke 3 rodDiv - define rodSpace : rodDf.width / 5 + do "Counting Rods" + define rodDiv : Math.min 2 : mix 1 para.diversityM 2 + define rodDf : DivFrame rodDiv 5 + define rodSw rodDf.mvs + define hRodSw : AdviceStroke 3 rodDiv + define rodSpace : rodDf.width / 5 - do "Counting Rod Ones" + # Ones define [RodY i sw] : mix (0 + sw / 2) (CAP - sw / 2) (i / 4) create-glyph 'countingRod1' 0x1D360 : glyph-proc local df : include : DivFrame rodDiv @@ -53,7 +54,7 @@ glyph-block Symbol-Counting-Rod : begin include : refer-glyph 'countingRod4' AS_BASE ALSO_METRICS include : VBar.m df.middle [RodY 3 hRodSw] CAP rodSw - do "Counting Rod Tens" + # Tens define [rodTens nStrokes plusFive] : glyph-proc local df : include : DivFrame rodDiv nStrokes include : df.markSet.capital @@ -87,6 +88,8 @@ glyph-block Symbol-Counting-Rod : begin include : rodTens 4 1 do "Tally Marks" + define rodDiv : Math.min 2 : mix 1 para.diversityM 2 + create-glyph 'tallyMarkOne' 0x1D377 : glyph-proc local df : include : DivFrame : if (para.diversityII < 1) (rodDiv / 4) 1 include : df.markSet.capital diff --git a/packages/font-glyphs/src/symbol/geometric/corner-shape.ptl b/packages/font-glyphs/src/symbol/geometric/corner-shape.ptl index d8589e29e5..8febecabf4 100644 --- a/packages/font-glyphs/src/symbol/geometric/corner-shape.ptl +++ b/packages/font-glyphs/src/symbol/geometric/corner-shape.ptl @@ -10,8 +10,8 @@ glyph-block Symbol-Geometric-Corner-Shape: begin for-width-kinds WideWidth1 : do define ptMaxWidth : MosaicWidth - SB - define ptHeight0 : 1.5 * (Width - SB / 2) * [Math.pow (MosaicWidth / MosaicUnitWidth) (1 / 4)] - define ptHeight : ptHeight0 * ptHeight0 / [Math.hypot ptHeight0 : Math.min ptHeight0 ptMaxWidth] + define ptHeight0 : 1.5 * (Width - SB / 2) * ((MosaicWidth / MosaicUnitWidth) ** (1 / 4)) + define ptHeight : (ptHeight0 ** 2) / [Math.hypot ptHeight0 : Math.min ptHeight0 ptMaxWidth] define ptWidth : Math.min ptMaxWidth ptHeight define ptMidX : MosaicWidth / 2 define ptSB : (MosaicWidth - ptWidth) / 2 diff --git a/packages/font-glyphs/src/symbol/geometric/shared.ptl b/packages/font-glyphs/src/symbol/geometric/shared.ptl index 8fb4d30470..9e1b82e776 100644 --- a/packages/font-glyphs/src/symbol/geometric/shared.ptl +++ b/packages/font-glyphs/src/symbol/geometric/shared.ptl @@ -10,8 +10,8 @@ glyph-block Symbol-Geometric-Shared : begin glyph-block-export GeometricDim define [GeometricDim unitWidth fullWidth] : begin define s : fullWidth / unitWidth - define sb : 0.625 * SB * s * s * [Math.pow (unitWidth / Width) 2] - define tallSize : 0.5 * para.arrowHeight * (unitWidth - sb) * [Math.pow s (1 / 3)] + define sb : 0.625 * SB * (s ** 2) * ((unitWidth / Width) ** 2) + define tallSize : 0.5 * para.arrowHeight * (unitWidth - sb) * [Math.cbrt s] define size : Math.min (0.5 * fullWidth - sb) tallSize return : object UnitWidth unitWidth @@ -29,10 +29,10 @@ glyph-block Symbol-Geometric-Shared : begin glyph-block-export UnicodeWeightGrade define [UnicodeWeightGrade n s] : begin define kwPow 1 - define kkw : 2 / [Math.pow 4 kwPow] - define kw : 10 - s - kkw * [Math.pow n kwPow] + define kkw : 2 / (4 ** kwPow) + define kw : 10 - s - kkw * (n ** kwPow) define [mulPow ss pm] : (1 / 4 + ss / 8) * [StrokeWidthBlend 2 1] - define kMul : [Math.pow n : mulPow s] / [Math.pow 4 : mulPow 2] + define kMul : (n ** [mulPow s]) / (4 ** [mulPow 2]) define kAdj : GeometryStroke / [AdviceStroke 6] return : kMul * kAdj * [AdviceStroke kw] diff --git a/packages/font-glyphs/src/symbol/mosaic/teletext.ptl b/packages/font-glyphs/src/symbol/mosaic/teletext.ptl index c1cf69ad4a..a4f067e541 100644 --- a/packages/font-glyphs/src/symbol/mosaic/teletext.ptl +++ b/packages/font-glyphs/src/symbol/mosaic/teletext.ptl @@ -63,7 +63,7 @@ glyph-block Symbol-Mosaic-Teletext : begin include : ForceUpright include : BlockMosaicPattern w h pattern - define [MakeGappedBlockMosaic w h su] : foreach [offset : range 1 [Math.pow 2 (w * h)]] : begin + define [MakeGappedBlockMosaic w h su] : foreach [offset : range 1 : 2 ** (w * h)] : begin create-glyph [MangleName : NameUni (su + offset)] [MangleUnicode (su + offset)] : glyph-proc set-width MosaicWidth include : ForceUpright diff --git a/packages/font-glyphs/src/symbol/pictograph/checking-marks.ptl b/packages/font-glyphs/src/symbol/pictograph/checking-marks.ptl index 7fc1316a2e..3ab2bbaf21 100644 --- a/packages/font-glyphs/src/symbol/pictograph/checking-marks.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/checking-marks.ptl @@ -16,8 +16,8 @@ glyph-block Symbol-Pictograph-Checking-Marks : begin define heavySw : UnicodeWeightGrade 9 Geom.Scalar define ptMaxWidth : MosaicWidth - SB - define ptHeight0 : 1.5 * (Width - SB / 2) * [Math.pow (MosaicWidth / MosaicUnitWidth) (1 / 4)] - define ptHeight : ptHeight0 * ptHeight0 / [Math.hypot ptHeight0 : Math.min ptHeight0 ptMaxWidth] + define ptHeight0 : 1.5 * (Width - SB / 2) * ((MosaicWidth / MosaicUnitWidth) ** (1 / 4)) + define ptHeight : (ptHeight0 ** 2) / [Math.hypot ptHeight0 : Math.min ptHeight0 ptMaxWidth] define ptWidth : Math.min ptMaxWidth ptHeight define ptMidX : MosaicWidth / 2 define ptSB : (MosaicWidth - ptWidth) / 2 diff --git a/packages/font-glyphs/src/symbol/pictograph/i-ching.ptl b/packages/font-glyphs/src/symbol/pictograph/i-ching.ptl index 0f754a9e35..804ff4473f 100644 --- a/packages/font-glyphs/src/symbol/pictograph/i-ching.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/i-ching.ptl @@ -27,7 +27,7 @@ glyph-block Symbol-Pictograph-I-Ching : begin include : HBar.m (Middle - 0.5 * width) (Middle + 0.5 * width) 0 bar include : HBar.m (RightSB - width) RightSB 0 bar - define [patterns n su] : foreach [offset: range 0 [Math.pow 2 n]] : begin + define [patterns n su] : foreach [offset : range 0 : 2 ** n] : begin create-glyph ('iChing/Pattern/' + n + '/' + offset) (su + offset) : glyph-proc local offsetY : (2 / 3) * (OperBot - PictTop) / n local startY : SymbolMid - offsetY * (n - 1) / 2 @@ -35,7 +35,7 @@ glyph-block Symbol-Pictograph-I-Ching : begin include : with-transform [ApparentTranslate 0 (startY + offsetY * bit)] refer-glyph : if [not : maskBit offset bit] 'iChing/barYang' 'iChing/barYin' - define [hexagramPatterns su order] : foreach [offset: range 0 64] : begin + define [hexagramPatterns su order] : foreach [offset : range 0 64] : begin create-glyph ('iChing/Pattern/6/' + offset) (su + offset) : glyph-proc local offsetY : (PictBot - PictTop) / 6 local startY : SymbolMid - offsetY * (6 - 1) / 2 @@ -54,11 +54,11 @@ glyph-block Symbol-Pictograph-I-Ching : begin [Just '1'] 'iChing/barYin' __ 'iChing/barRen' - define [stringPatterns su pats] : foreach [offset: range 0 pats.length] : begin + define [stringPatterns su pats] : foreach [offset : range 0 pats.length] : begin local pat pats.(offset) create-glyph ('iChing/Pattern/txj/' + pat) (su + offset) : stringPattern pat - define [ternaryPatterns n su] : foreach [offset: range 0 [Math.pow 3 n]] : begin + define [ternaryPatterns n su] : foreach [offset : range 0 : 3 ** n] : begin local pat : [offset.toString 3].padStart n '0' create-glyph ('iChing/Pattern/txj/' + pat) (su + offset) : stringPattern pat diff --git a/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl b/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl index d015779928..5994bcbdf6 100644 --- a/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl @@ -105,7 +105,7 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin define scaffold : object set scaffold.top : mix uiFigBot uiFigTop 0.85 set scaffold.bot : mix uiFigBot uiFigTop 0.15 - set scaffold.width : (Middle - SB) * 2 * [Math.pow (MosaicWidth / Width) 0.3] + set scaffold.width : (Middle - SB) * 2 * ((MosaicWidth / Width) ** 0.3) set scaffold.xMiddle : MosaicWidth / 2 set scaffold.xLeft : scaffold.xMiddle - scaffold.width / 2 set scaffold.xRight : scaffold.xMiddle + scaffold.width / 2 @@ -231,7 +231,7 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin set scaffold.top : mix uiFigBot uiFigTop 0.85 set scaffold.bot : mix uiFigBot uiFigTop 0.15 set scaffold.slope 0.6 - set scaffold.width : (Middle - SB) * 2 * [Math.pow (MosaicWidth / Width) 0.5] + set scaffold.width : (Middle - SB) * 2 * ((MosaicWidth / Width) ** 0.5) set scaffold.stroke : AdviceStroke 3.5 set scaffold.xMiddle : MosaicWidth / 2 set scaffold.xLeft : scaffold.xMiddle - scaffold.width / 2 @@ -292,7 +292,7 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin set scaffold.top : [mix uiFigBot uiFigTop 0.9] - scaffold.stroke set scaffold.mid : mix uiFigBot uiFigTop 0.5 set scaffold.bot : [mix uiFigBot uiFigTop 0.1] + scaffold.stroke - set scaffold.width : (Middle - SB) * 2 * [Math.pow (MosaicWidth / Width) 0.5] + set scaffold.width : (Middle - SB) * 2 * ((MosaicWidth / Width) ** 0.5) set scaffold.left : (MosaicWidth / 2) - scaffold.width / 2 + scaffold.stroke / 2 set scaffold.right : (MosaicWidth / 2) + scaffold.width / 2 - scaffold.stroke / 2 diff --git a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl index db251305ee..53b7b2d6eb 100644 --- a/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/stick-figure.ptl @@ -61,8 +61,8 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin local innerKnots {} foreach j [range 1 64] : begin local theta : (Math.PI / 2) * (j / 64) - local c : Math.pow [Math.cos theta] (2 / DesignParameters.superness) - local s : Math.pow [Math.sin theta] (2 / DesignParameters.superness) + local c : [Math.cos theta] ** (2 / DesignParameters.superness) + local s : [Math.sin theta] ** (2 / DesignParameters.superness) local mx : mix box.left box.right [mix h1 h2 : if mode (1 - c) s ] local my : mix box.bottom box.top [mix v1 v2 : if mode s (1 - c)] @@ -111,8 +111,8 @@ glyph-block Symbol-Pictograph-Stick-Figure : begin define nKnots 64 foreach j [range 1 nKnots] : begin local theta : (Math.PI / 2) * (j / nKnots) - local c : Math.pow [Math.cos theta] (2 / DesignParameters.superness) - local s : Math.pow [Math.sin theta] (2 / DesignParameters.superness) + local c : [Math.cos theta] ** (2 / DesignParameters.superness) + local s : [Math.sin theta] ** (2 / DesignParameters.superness) local mx : mix box.left box.right (ho + s * dh1 + c * dh2) local my : mix box.bottom box.top (vo + s * dv1 + c * dv2) diff --git a/packages/font-glyphs/src/symbol/punctuation/percentages.ptl b/packages/font-glyphs/src/symbol/punctuation/percentages.ptl index 366c160594..6ce6ca9b38 100644 --- a/packages/font-glyphs/src/symbol/punctuation/percentages.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/percentages.ptl @@ -13,8 +13,8 @@ glyph-block Symbol-Punctuation-Percentages : begin define WideUnicode : WideUnicodeT WideWidth1 define [PercentBarCor df sw] : begin - local a : 1 - [Math.pow ((df.rightSB - df.leftSB - sw) / (CAP - 0)) 2] - return : HVContrast / [if (a > 0) [Math.sqrt a] 1] + local a : 1 - (((df.rightSB - df.leftSB - sw) / (CAP - 0)) ** 2) + return : HVContrast / [if (a <= 0) 1 : Math.sqrt a] define [PercentBarShape df sw] : begin local cor : PercentBarCor df sw @@ -26,7 +26,7 @@ glyph-block Symbol-Punctuation-Percentages : begin create-glyph 'percent.dots' : glyph-proc include : PercentBarShape [DivFrame 1] Stroke - local dotwidth ([AdviceStroke 4] * 1.5) + local dotwidth : [AdviceStroke 4] * 1.5 include : VBar.l SB [mix CAP 0 0.3] CAP dotwidth include : VBar.r RightSB 0 [mix 0 CAP 0.3] dotwidth @@ -147,7 +147,7 @@ glyph-block Symbol-Punctuation-Percentages : begin local adb : ArchDepthB * 0.5 * para.diversityM local sw : AdviceStroke2 4 5 CAP para.diversityM local fine : AdviceStroke2 5 5 CAP para.diversityM - local cor : HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - sw) / (CAP - 0)) 2])] + local cor : HVContrast / [Math.sqrt : 1 - (((r - l - sw) / (CAP - 0)) ** 2)] local pTerm : (fine / 2) / [Math.hypot CAP (r - l)] local pFine : 1 / 2 - (Stroke / 2) / [Math.hypot CAP (r - l)] diff --git a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl index 0401dfe5d6..f42b03befc 100644 --- a/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/quotes-and-primes.ptl @@ -252,8 +252,8 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin local sw : AdviceStroke 3 include : dispiro g4.up.start xLeft quoteBottom [widths.rhs.heading sw Upward] - g2 [pre@mix@post 0.5] [pre@mix@post 0.5] [widths.center sw] - g4.up.end xRight quoteTop [widths.lhs.heading sw Upward] + g2 [mix xLeft xRight 0.5] [mix quoteBottom quoteTop 0.5] [widths.center sw] + g4.up.end xRight quoteTop [widths.lhs.heading sw Upward] create-glyph "armn/questionMark" 0x055E : glyph-proc local df : include : DivFrame para.diversityF diff --git a/packages/font-glyphs/src/symbol/punctuation/slashes-and-number-sign.ptl b/packages/font-glyphs/src/symbol/punctuation/slashes-and-number-sign.ptl index 86ae8133b0..0a89457efa 100644 --- a/packages/font-glyphs/src/symbol/punctuation/slashes-and-number-sign.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/slashes-and-number-sign.ptl @@ -24,7 +24,7 @@ glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin local-parameter : b -- ParenBot local-parameter : w -- Stroke - local cor : (1 / 2) * HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - w) / (t - b)) 2])] + local cor : (1 / 2) * HVContrast / [Math.sqrt : 1 - (((r - l - w) / (t - b)) ** 2)] include : spiro-outline corner (r - w * cor) t corner (r + w * cor) t @@ -66,7 +66,7 @@ glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin local-parameter : b -- ParenBot local-parameter : w -- Stroke - local cor : (1 / 2) * HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - w) / (t - b)) 2])] + local cor : (1 / 2) * HVContrast / [Math.sqrt : 1 - (((r - l - w) / (t - b)) ** 2)] include : spiro-outline corner (l - w * cor) t corner (l + w * cor) t diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index 2f0f043195..9440f7baea 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-kits", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { "./derived-coordinates": "./src/derived-coordinates.mjs", @@ -8,9 +8,9 @@ "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/geometry": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/util": "32.2.1", "typo-geom": "^0.16.1" } } diff --git a/packages/font-kits/src/derived-coordinates.mjs b/packages/font-kits/src/derived-coordinates.mjs deleted file mode 100644 index 85a271cc8a..0000000000 --- a/packages/font-kits/src/derived-coordinates.mjs +++ /dev/null @@ -1,248 +0,0 @@ -import { - DecorInterpolator, - DEP_POST_X, - DEP_POST_Y, - DEP_PRE_X, - DEP_PRE_Y, - DEP_SAME_X, - DEP_SAME_Y, - DerivedCoordinateBase, -} from "@iosevka/geometry/spiro-control"; - -const TINY = 1 / 128; - -export function SetupBuilders(_bindings) { - return { - // Derived coordinates - // pre@, post@: copy or ade delta to the pre or post point's X or Y coordinate - // use with pre@ or like (pre@ <+> delta) - "pre@": new CDeltaPre(0), - "post@": new CDeltaPost(0), - - // "Tangent" derived cooredinates, which is simply a tiny delta. - "pre@tang-out": s => new CDeltaPre(TINY * s), - "post@tang-out": s => new CDeltaPost(TINY * s), - "pre@tang-in": s => new CDeltaPre(-TINY * s), - "post@tang-in": s => new CDeltaPost(-TINY * s), - - // pre@mix@post: mix between pre and post point's X or Y coordinates - // usage [pre@mix@post proportion] or [pre@mix@post proportion delta] - "pre@mix@post": (p, delta) => new CMixCoord(p, delta), - "post@mix@pre": (p, delta) => new CMixCoord(1 - p, delta), - - // pre@slope, post@slope: Get the coordiante using the pre/post point's coordinate and a - // slope. An optional delta can be added to the result. See the definitions for more - // details. - "pre@slope": (s, delta) => new CAtSlopePre(s, delta), - "post@slope": (s, delta) => new CAtSlopePost(s, delta), - - // Min and max derived coordinates - "min@": (...args) => new CMathFold(Math.min, args), - "max@": (...args) => new CMathFold(Math.max, args), - - // Interpolators - // decor@, decor@@, decor@@@: Add a "delay" to the thing inside when resolving the spiro - // controls. This is a very useful utility for coordinate propagation, which allow us to - // "skip" the current point and go to the next or previous point. The number of @'s - // determines the number of times the delay is applied. - "decor@": x => new DecorInterpolator(x), - "decor@@": x => new DecorInterpolator(new DecorInterpolator(x)), - "decor@@@": x => new DecorInterpolator(new DecorInterpolator(new DecorInterpolator(x))), - }; -} - -class CDeltaPre extends DerivedCoordinateBase { - constructor(delta) { - super(); - this.delta = delta; - } - op_add(delta) { - return new CDeltaPre(this.delta + delta); - } - op_sub(delta) { - return new CDeltaPre(this.delta - delta); - } - getDependencyForX() { - return DEP_PRE_X; - } - getDependencyForY() { - return DEP_PRE_Y; - } - resolveX(pre, curr, post) { - return pre.x + this.delta; - } - resolveY(pre, curr, post) { - return pre.y + this.delta; - } -} - -class CDeltaPost extends DerivedCoordinateBase { - constructor(delta) { - super(); - this.delta = delta; - } - op_add(delta) { - return new CDeltaPost(this.delta + delta); - } - op_sub(delta) { - return new CDeltaPost(this.delta - delta); - } - getDependencyForX() { - return DEP_POST_X; - } - getDependencyForY() { - return DEP_POST_Y; - } - resolveX(pre, curr, post) { - return post.x + this.delta; - } - resolveY(pre, curr, post) { - return post.y + this.delta; - } -} - -class CMathFold extends DerivedCoordinateBase { - constructor(operator, args) { - super(); - this.operator = operator; - this.args = args; - } - getDependencyForX() { - let flag = 0; - for (const item of this.args) { - if (typeof item === "number") continue; - flag |= item.getDependencyForX(); - } - return flag; - } - getDependencyForY() { - let flag = 0; - for (const item of this.args) { - if (typeof item === "number") continue; - flag |= item.getDependencyForY(); - } - return flag; - } - resolveX(pre, curr, post) { - let result = - typeof this.args[0] === "number" - ? this.args[0] - : this.args[0].resolveX(pre, curr, post); - for (let i = 1; i < this.args.length; i++) { - const item = this.args[i]; - const value = typeof item === "number" ? item : item.resolveX(pre, curr, post); - result = this.operator(result, value); - } - return result; - } - resolveY(pre, curr, post) { - let result = - typeof this.args[0] === "number" - ? this.args[0] - : this.args[0].resolveY(pre, curr, post); - for (let i = 1; i < this.args.length; i++) { - const item = this.args[i]; - const value = typeof item === "number" ? item : item.resolveY(pre, curr, post); - result = this.operator(result, value); - } - return result; - } -} - -export class CMixCoord extends DerivedCoordinateBase { - constructor(proportion, delta, mockPre, mockPost) { - super(); - this.proportion = proportion; - this.delta = delta || 0; - this.mockPre = mockPre || null; - this.mockPost = mockPost || null; - } - getDependencyForX() { - let f = 0; - if (!this.mockPre) f |= DEP_PRE_X; - if (!this.mockPost) f |= DEP_POST_X; - return f; - } - getDependencyForY() { - let f = 0; - if (!this.mockPre) f |= DEP_PRE_Y; - if (!this.mockPost) f |= DEP_POST_Y; - return f; - } - resolveX(_pre, curr, _post) { - const pre = this.mockPre || _pre; - const post = this.mockPost || _post; - return pre.x + this.proportion * (post.x - pre.x) + this.delta; - } - resolveY(_pre, curr, _post) { - const pre = this.mockPre || _pre; - const post = this.mockPost || _post; - return pre.y + this.proportion * (post.y - pre.y) + this.delta; - } -} - -class CAtSlopePre extends DerivedCoordinateBase { - constructor(slope, delta) { - super(); - this.slope = slope; - this.delta = delta || 0; - } - getDependencyForX() { - return DEP_PRE_X | DEP_PRE_Y | DEP_SAME_Y; - } - getDependencyForY() { - return DEP_PRE_X | DEP_PRE_Y | DEP_SAME_X; - } - resolveY(pre, curr, post) { - return pre.y + this.slope * (curr.x - pre.x) + this.delta; - } - resolveX(pre, curr, post) { - return pre.x + (curr.y - pre.y) / this.slope + this.delta; - } -} - -class CAtSlopePost extends DerivedCoordinateBase { - constructor(slope, delta) { - super(); - this.slope = slope; - this.delta = delta || 0; - } - getDependencyForX() { - return DEP_POST_X | DEP_POST_Y | DEP_SAME_Y; - } - getDependencyForY() { - return DEP_POST_X | DEP_POST_Y | DEP_SAME_X; - } - resolveY(pre, curr, post) { - return post.y + this.slope * (curr.x - post.x) + this.delta; - } - resolveX(pre, curr, post) { - return post.x + (curr.y - post.y) / this.slope + this.delta; - } -} - -const KBP_X = 1; -const KBP_Y = 2; -export class CopyBackKnotProxy { - constructor(delegate, bag, options) { - this.delegate = delegate; - this.bag = bag; - this.options = options; - } - - getDependency(stage) { - return this.delegate.getDependency(stage); - } - getKernelKnot() { - return this.delegate.getKernelKnot(); - } - resolveCoordiantePropogation(ic, pre, post) { - let r = this.delegate.resolveCoordiantePropogation(ic, pre, post); - if (this.options & KBP_X) this.bag.x = this.delegate.x; - if (this.options & KBP_Y) this.bag.y = this.delegate.y; - return r; - } - resolveInterpolation() { - return this.delegate.resolveInterpolation(); - } -} diff --git a/packages/font-kits/src/spiro-kit.mjs b/packages/font-kits/src/spiro-kit.mjs index 0d27678234..e690f48177 100644 --- a/packages/font-kits/src/spiro-kit.mjs +++ b/packages/font-kits/src/spiro-kit.mjs @@ -7,6 +7,7 @@ import { UserCloseKnotPair, UserControlKnot, VirtualControlKnot, + DecorInterpolator, } from "@iosevka/geometry/spiro-control"; import { bez3, fallback, mix } from "@iosevka/util"; @@ -310,6 +311,9 @@ export function SetupBuilders(bindings) { alsoThru.g2 = function (rx, ry, raf) { return new SimpleMixInterpolator(g2, rx, ry, 0, 0, raf); }; + alsoThru.g4 = function (rx, ry, raf) { + return new SimpleMixInterpolator(g4, rx, ry, 0, 0, raf); + }; /// Multi-mix interpolator class MultiMixInterpolator extends InterpolatorBase { @@ -500,5 +504,8 @@ export function SetupBuilders(bindings) { dispiro, "spiro-outline": spiroOutline, "spiro-collect": spiroCollect, + "decor@": x => new DecorInterpolator(x), + "decor@@": x => new DecorInterpolator(new DecorInterpolator(x)), + "decor@@@": x => new DecorInterpolator(new DecorInterpolator(new DecorInterpolator(x))), }; } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index 1939cd843a..029f79865b 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./lib/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "32.2.0", - "@iosevka/glyph": "32.2.0", + "@iosevka/font-glyphs": "32.2.1", + "@iosevka/glyph": "32.2.1", "toposort": "^2.0.2" } } diff --git a/packages/font/package.json b/packages/font/package.json index c4590a33ee..c61809f39e 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "32.2.0", - "@iosevka/font-otl": "32.2.0", - "@iosevka/geometry": "32.2.0", - "@iosevka/geometry-cache": "32.2.0", - "@iosevka/glyph": "32.2.0", - "@iosevka/param": "32.2.0", - "@iosevka/util": "32.2.0", + "@iosevka/font-glyphs": "32.2.1", + "@iosevka/font-otl": "32.2.1", + "@iosevka/geometry": "32.2.1", + "@iosevka/geometry-cache": "32.2.1", + "@iosevka/glyph": "32.2.1", + "@iosevka/param": "32.2.1", + "@iosevka/util": "32.2.1", "harfbuzzjs": "^0.4.3", "ot-builder": "^1.7.4", "semver": "^7.6.3", diff --git a/packages/geometry-cache/package.json b/packages/geometry-cache/package.json index f0013b4780..7c57ce96a1 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "32.2.0", + "@iosevka/geometry": "32.2.1", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index d7897ae0b0..b71fdb0dec 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -16,7 +16,7 @@ "./encoding": "./src/encoding.mjs" }, "dependencies": { - "@iosevka/util": "32.2.0", + "@iosevka/util": "32.2.1", "spiro": "^3.0.1", "typo-geom": "^0.16.1" } diff --git a/packages/geometry/src/spiro-control.mjs b/packages/geometry/src/spiro-control.mjs index 399990de0f..5c0613e52d 100644 --- a/packages/geometry/src/spiro-control.mjs +++ b/packages/geometry/src/spiro-control.mjs @@ -61,25 +61,15 @@ export class SpiroFlattener { } sink.push(c); - const cHasDependency = - c.getDependency(RES_DEP_STAGE_COORDINATE_PROPOGATION_X) || - c.getDependency(RES_DEP_STAGE_COORDINATE_PROPOGATION_Y) || - c.getDependency(RES_DEP_STAGE_INTERPOLATION); + const cHasDependency = c.getDependency(RES_DEP_STAGE_INTERPOLATION); return cHasDependency ? 1 : 0; } } flattenImpl() { - this.propagateCoordinates(); return this.doInterpolate(); } - propagateCoordinates() { - const propagator = new CoordinatePropagator(this.controls); - if (!propagator.nDependencies) return; - propagator.solveAll(); - } - doInterpolate() { let nd = 0; let sink = []; @@ -101,7 +91,7 @@ export class SpiroFlattener { return nd; } - getDependenciesForInterpolation(skipKind) { + getDependenciesForInterpolation() { let nNonDependent = 0; let nDependent = 0; let deps = []; @@ -156,70 +146,6 @@ export class SpiroFlattener { } } -/// Utility class to propagate coordinates -class CoordinatePropagator { - constructor(subjects) { - this.nDependencies = 0; - this.subjects = []; - this.depX = []; - this.stateX = []; - this.depY = []; - this.stateY = []; - - for (const subject of subjects) { - let dx = subject.getDependency(RES_DEP_STAGE_COORDINATE_PROPOGATION_X); - let dy = subject.getDependency(RES_DEP_STAGE_COORDINATE_PROPOGATION_Y); - if (dx === DEP_SKIP && dy === DEP_SKIP) continue; - - this.subjects.push(subject); - this.depX.push(dx), this.depY.push(dy); - this.stateX.push(dx > DEP_SKIP ? CR_UNRESOLVED : CR_RESOLVED); - this.stateY.push(dy > DEP_SKIP ? CR_UNRESOLVED : CR_RESOLVED); - if (dx > DEP_SKIP) this.nDependencies += 1; - if (dy > DEP_SKIP) this.nDependencies += 1; - } - } - - solveAll() { - for (let i = 0; i < this.subjects.length; i++) { - this.solve(i, 0); - this.solve(i, 1); - } - } - solve(i, ic) { - const depC = ic ? this.depY : this.depX; - const stateC = ic ? this.stateY : this.stateX; - - if (stateC[i] === CR_RESOLVED) return; - if (stateC[i] === CR_RESOLVING) { - console.log(this); - throw new Error("Circular dependency detected"); - } - - stateC[i] = CR_RESOLVING; - - if (depC[i] & DEP_PRE_X) this.solve(this.cycI(i - 1), 0); - if (depC[i] & DEP_PRE_Y) this.solve(this.cycI(i - 1), 1); - if (depC[i] & DEP_SAME_X) this.solve(this.cycI(i), 0); - if (depC[i] & DEP_SAME_Y) this.solve(this.cycI(i), 1); - if (depC[i] & DEP_POST_X) this.solve(this.cycI(i + 1), 0); - if (depC[i] & DEP_POST_Y) this.solve(this.cycI(i + 1), 1); - - // console.log(i, ic, this); - this.subjects[i].resolveCoordiantePropogation( - ic, - this.subjects[this.cycI(i - 1)].getKernelKnot(), - this.subjects[this.cycI(i + 1)].getKernelKnot(), - ); - - stateC[i] = CR_RESOLVED; - } - - cycI(i) { - return (i + this.subjects.length) % this.subjects.length; - } -} - /////////////////////////////////////////////////////////////////////////////////////////////////// /** The "amendmend function" */ @@ -243,9 +169,7 @@ export class AfCombine extends AfBase { /////////////////////////////////////////////////////////////////////////////////////////////////// -const RES_DEP_STAGE_COORDINATE_PROPOGATION_X = 0; -const RES_DEP_STAGE_COORDINATE_PROPOGATION_Y = 1; -const RES_DEP_STAGE_INTERPOLATION = 2; +const RES_DEP_STAGE_INTERPOLATION = 1; export const DEP_SKIP = 0x1; export const DEP_PRE_X = 0x2; @@ -258,10 +182,6 @@ export const DEP_POST_Y = 0x40; const DEP_PRE = DEP_PRE_X | DEP_PRE_Y; const DEP_POST = DEP_POST_X | DEP_POST_Y; -const CR_UNRESOLVED = 0; -const CR_RESOLVING = 1; -const CR_RESOLVED = 2; - export class UserControlKnot { constructor(type, x, y, af) { this.type = type; @@ -273,17 +193,8 @@ export class UserControlKnot { if (this.af) this.af.applyTo(ctx); } - getDependency(stage) { - switch (stage) { - case RES_DEP_STAGE_COORDINATE_PROPOGATION_X: - return typeof this.x === "number" ? 0 : this.x.getDependencyForX(); - case RES_DEP_STAGE_COORDINATE_PROPOGATION_Y: - return typeof this.y === "number" ? 0 : this.y.getDependencyForY(); - case RES_DEP_STAGE_INTERPOLATION: - return 0; - default: - return 0; - } + getDependency() { + return 0; } getKernelKnot() { @@ -308,7 +219,7 @@ export class UserControlKnot { } static isCoordinateValid(x) { - return (typeof x === "number" && isFinite(x)) || x instanceof DerivedCoordinateBase; + return isFinite(x); } } @@ -382,9 +293,6 @@ export class InterpolatorBase { getDependency(stage) { switch (stage) { - case RES_DEP_STAGE_COORDINATE_PROPOGATION_X: - case RES_DEP_STAGE_COORDINATE_PROPOGATION_Y: - return DEP_SKIP; case RES_DEP_STAGE_INTERPOLATION: return DEP_PRE | DEP_POST; default: @@ -406,6 +314,11 @@ export class InterpolatorBase { } } +/** + * Used in [decor@] (and thus operator (~~~)). + * Make a list of control items "delayed" till resolution of interpolator. + * Useful for specifying the decoration features of a path. + */ export class DecorInterpolator extends InterpolatorBase { constructor(items) { super(); @@ -427,41 +340,6 @@ export class FunctionInterpolator extends InterpolatorBase { } } -/** - * This class denotes an interpolator that has a proxy knot. The proxy could be used in the - * coordinate propagation stage to resolve dependencies. - */ -export class KnotProxyInterpolator extends InterpolatorBase { - constructor(proxy, actual) { - super(); - this.knotProxy = proxy; - this.actual = actual; - } - - getDependency(stage) { - switch (stage) { - case RES_DEP_STAGE_COORDINATE_PROPOGATION_X: - case RES_DEP_STAGE_COORDINATE_PROPOGATION_Y: - return this.knotProxy.getDependency(stage); - default: - return this.actual.getDependency(stage); - } - } - - getKernelKnot() { - return this.knotProxy.getKernelKnot(); - } - resolveCoordiantePropogation(ic, pre, post) { - this.knotProxy.resolveCoordiantePropogation(ic, pre, post); - } - resolveInterpolation(pre, post) { - return this.actual.resolveInterpolation(pre, post); - } -} -export function WithKnotProxy(proxy, actual) { - return new KnotProxyInterpolator(proxy, actual); -} - /////////////////////////////////////////////////////////////////////////////////////////////////// export class TerminateInstruction { @@ -474,20 +352,3 @@ export class TerminateInstruction { if (this.af) throw new Error("Unreachable"); } } - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -export class DerivedCoordinateBase { - getDependencyForX() { - throw new Error("Unimplemented"); - } - getDependencyForY() { - throw new Error("Unimplemented"); - } - resolveX(pre, curr, post) { - throw new Error("Unimplemented"); - } - resolveY(pre, curr, post) { - throw new Error("Unimplemented"); - } -} diff --git a/packages/glyph/package.json b/packages/glyph/package.json index 9155144e17..45f4c5c810 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "32.2.0" + "@iosevka/geometry": "32.2.1" } } diff --git a/packages/param/package.json b/packages/param/package.json index e79839d2cb..f97c7b76d8 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "32.2.0" + "@iosevka/util": "32.2.1" } } diff --git a/packages/util/package.json b/packages/util/package.json index 9b5309af22..10b369b607 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/packages/util/src/index.mjs b/packages/util/src/index.mjs index 9aa0ce2a3f..117bfeb65b 100644 --- a/packages/util/src/index.mjs +++ b/packages/util/src/index.mjs @@ -37,10 +37,20 @@ export function strokeOffset(x, y, dx, dy, offset, contrast) { const r = Math.hypot(dx, dy); return { x: x + (dy / r) * offset * contrast, - y: y - (dx / r) * offset + y: y - (dx / r) * offset, }; } +export const min = Math.min; +export const max = Math.max; + +export function slY(x0, y0, x1, slope) { + return y0 + slope * (x1 - x0); +} +export function slX(x0, y0, y1, slope) { + return x0 + (y1 - y0) / slope; +} + /////////////////////////////////////////////////////////////////////////////////////////////////// export function joinCamel(a, b) { diff --git a/params/shape-weight.toml b/params/shape-weight.toml index 0e531dca75..304c69ecf9 100644 --- a/params/shape-weight.toml +++ b/params/shape-weight.toml @@ -13,6 +13,7 @@ periodSize = 140 # Size of period jut = 85 # Length of slab serif vjut = 145 # Length of vertical slab serif longjut = 175 # Length of long serifs, like that in `i`. +longvjut = 175 # Length of diacritical descenders in cyrillics. archDepth = 195 # Vertical arc size in capital letters. smallArchDepth = 200 # Vertical arc size in lowercase letters. diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index e82a9d60d3..fe5b9fdcc2 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "32.2.0", + "@iosevka/param": "32.2.1", "@unicode/unicode-16.0.0": "^1.6.4", "semver": "^7.6.3" } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index e3e407393a..eb0d6ca5e3 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "32.2.0", + "@iosevka/param": "32.2.1", "@unicode/unicode-16.0.0": "^1.6.4", "cldr": "^7.6.0", "@msgpack/msgpack": "^2.8.0" diff --git a/tools/generate-samples/package.json b/tools/generate-samples/package.json index cda75b02c7..b6b2137ed2 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "32.2.0", + "version": "32.2.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "32.2.0" + "@iosevka/data-export": "32.2.1" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index 55ac0960a2..f44e1b9847 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/misc", - "version": "32.2.0", + "version": "32.2.1", "private": true, "dependencies": { "semver": "^7.6.3", "wawoff2": "^2.0.1", - "@iosevka/util": "32.2.0", + "@iosevka/util": "32.2.1", "@unicode/unicode-16.0.0": "^1.6.4" } }