Add XH-height middle-serifed and dual-serifed variants for Eszet. As a result, current variants are reordered (#1904).

This commit is contained in:
be5invis 2023-08-09 15:36:24 -07:00
parent 8190f81a04
commit 30a050e307
7 changed files with 54 additions and 24 deletions

View file

@ -1,3 +1,4 @@
* \[**Breaking**\] Add XH-height middle-serifed and dual-serifed variants for Eszet. As a result, current variants are reordered (#1904).
* Make Cyrillic Abkhasian Che respond to C's serifs (#1898).
* Drop APL form for `U+220D` as it is not used by any APL languages (#1901).
* Fix `cv36`, `cv46`, `cv47`, `cv48`, `cv49`, `cv50`, `cv61`, and `cv74` under Curly Slab.

View file

@ -2,6 +2,7 @@ $$include '../../../meta/macros.ptl'
import [mix fallback SuffixCfg] from"../../../support/utils.mjs"
import [Dotless CvDecompose] from"../../../support/gr.mjs"
import [maskBits] from"../../../support/util/mask-bit.mjs"
glyph-module
@ -10,24 +11,28 @@ glyph-block Letter-Latin-Lower-Eszet : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : FlatHookDepth PalatalHook CyrDescender SerifFrame
glyph-block-import Letter-Latin-S : AdviceSArchDepth
glyph-block-import Letter-Latin-Lower-F : fbar
define NO-TAIL 0
define DESCENDING 1
define TAILED 2
define SERIF-NONE 0
define SERIF-BOT 1
define SERIF-MID 2
define SERIF-DUAL 3
define SERIF-NONE 0
define SERIF-BOT 1
define SERIF-MID 2
define SERIF-MID-XH 4
define [EszetSerifs df fTraditional slab] : begin
local sf : SerifFrame.fromDf [DivFrame 1] XH 0
define SERIF-DUAL : SERIF-BOT + SERIF-MID
define SERIF-DUAL-XH : SERIF-BOT + SERIF-MID-XH
define [EszetSerifs df fTraditional slab] : glyph-proc
local sf : SerifFrame.fromDf [DivFrame 1] fbar 0
local lb : if fTraditional sf.lb.full sf.lb.outer
return : match slab
[Just SERIF-BOT] : composite-proc lb
[Just SERIF-MID] : composite-proc sf.lt.outer
[Just SERIF-DUAL] : composite-proc lb sf.lt.outer
__ : no-shape
if [maskBits slab SERIF-BOT] : include lb
if [maskBits slab SERIF-MID] : include sf.lt.outer
local sfXH : SerifFrame.fromDf [DivFrame 1] XH 0
if [maskBits slab SERIF-MID-XH] : include sfXH.lt.outer
define [Traditional fFlathook] : function [slab tail] : glyph-proc
include : MarkSet.bp
@ -158,10 +163,12 @@ glyph-block Letter-Latin-Lower-Eszet : begin
'descending' DESCENDING
'tailed' TAILED
object # serifs
serifless 0
bottomSerifed 1
middleSerifed 2
dualSerifed 3
serifless SERIF-NONE
bottomSerifed SERIF-BOT
middleSerifed SERIF-MID
dualSerifed SERIF-DUAL
middleSerifedXH SERIF-MID-XH
dualSerifedXH SERIF-DUAL-XH
foreach { suffix { Base tail serif } } [pairs-of EszetConfig] : do
create-glyph "eszet.\(suffix)" : Base serif tail

View file

@ -2,7 +2,7 @@ $$include "../../../meta/macros.ptl"
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [Dotless CvDecompose] from"../../../support/gr.mjs"
import [maskBit maskBits popCountByte] from"../../../support/util/mask-bit.mjs"
import [maskBit maskBits] from"../../../support/util/mask-bit.mjs"
glyph-module

View file

@ -4093,21 +4093,25 @@ next = "terminal"
[prime.eszet.variants-buildup.stages.body.traditional]
rank = 1
groupRank = 10
descriptionAffix = "traditional, Fraktur-like shape"
selectorAffix.eszet = "traditional"
[prime.eszet.variants-buildup.stages.body.traditional-flat-hook]
rank = 2
groupRank = 20
descriptionAffix = "traditional Fraktur-like shape (containing a flat top hook)"
selectorAffix.eszet = "traditionalFlatHook"
[prime.eszet.variants-buildup.stages.body.sulzbacher]
rank = 3
groupRank = 30
descriptionAffix = "more modern, beta-like shape"
selectorAffix.eszet = "sulzbacher"
[prime.eszet.variants-buildup.stages.body.longs-s-lig]
rank = 4
groupRank = 40
descriptionAffix = "ligature of long-S (`ſ`) and `s`"
selectorAffix.eszet = "longSSLig"
@ -4116,16 +4120,19 @@ next = "serifs"
[prime.eszet.variants-buildup.stages.terminal.non-descending]
rank = 1
groupRank = 1
keyAffix = ""
selectorAffix.eszet = ""
[prime.eszet.variants-buildup.stages.terminal.descending]
rank = 2
groupRank = 2
descriptionAffix = "terminal descends baseline"
selectorAffix.eszet = "descending"
[prime.eszet.variants-buildup.stages.terminal.tailed]
rank = 3
groupRank = 2
descriptionAffix = "terminal containing tail"
selectorAffix.eszet = "tailed"
@ -4135,23 +4142,38 @@ desceiptioAffix = "serifs"
descriptionJoiner = "without"
selectorAffix.eszet = "serifless"
[prime.eszet.variants-buildup.stages.serifs.bottom-serifed]
enableIf = [{terminal = "non-descending"}]
rank = 2
descriptionAffix = "serif at bottom"
selectorAffix.eszet = "bottomSerifed"
[prime.eszet.variants-buildup.stages.serifs.middle-serifed]
rank = 3
rank = 2
descriptionAffix = "serif at middle"
selectorAffix.eszet = "middleSerifed"
[prime.eszet.variants-buildup.stages.serifs.dual-serifed]
[prime.eszet.variants-buildup.stages.serifs.middle-serifed-xh]
rank = 3
enableIf = [{body = "sulzbacher"}, {body = "longs-s-lig"}]
descriptionAffix = "serif at middle at x-height"
selectorAffix.eszet = "middleSerifedXH"
[prime.eszet.variants-buildup.stages.serifs.bottom-serifed]
enableIf = [{terminal = "non-descending"}]
rank = 4
descriptionAffix = "serif at bottom"
selectorAffix.eszet = "bottomSerifed"
[prime.eszet.variants-buildup.stages.serifs.dual-serifed]
enableIf = [{terminal = "non-descending"}]
rank = 5
descriptionAffix = "serif at middle and bottom"
selectorAffix.eszet = "dualSerifed"
[prime.eszet.variants-buildup.stages.serifs.dual-serifed-xh]
enableIf = [
{terminal = "non-descending", body = "sulzbacher"},
{terminal = "non-descending", body = "longs-s-lig"}
]
rank = 6
descriptionAffix = "serif at middle (x-height) and bottom"
selectorAffix.eszet = "dualSerifedXH"
[prime.lower-eth]