Fix variant selector of Cyrillic TE’s italics to better respect m’s tailed-ness (#734).

This commit is contained in:
be5invis 2020-11-15 00:37:38 -08:00
parent 10f2596115
commit fe53c125fe
5 changed files with 28 additions and 27 deletions

View file

@ -5,6 +5,7 @@
* Fix inconsistent italic serif of U+0463 CYRILLIC SMALL LETTER YAT (#729).
* Fix dotless form of mathematical derived letters if it ia aliased (#731).
* Fix inconsistent serif on Bulgarian U+044E CYRILLIC SMALL LETTER YU (#732).
* Fix variant selector of Cyrillic TEs italics to better respect `m`s tailed-ness (#734).
* Fix middle bar placement of U+2180 under quasi-proportional.
* Add Characters:
* U+1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I, U+1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J (#730).

View file

@ -5876,7 +5876,6 @@ glyph-block Letter-Latin-Lower-F : begin
define fbar : XH * DesignParameters.fBarPosToXH + Stroke * DesignParameters.fbarStrokeAdj
define fbarFH : XH * DesignParameters.fBarPosToXH + Stroke * DesignParameters.fbarStrokeAdjFH
define [SmallFBottomSerif] : dispiro
widths.lhs
flat ([mix SB RightSB 0.02] + HalfStroke * TanSlope) 0
@ -5944,29 +5943,29 @@ glyph-block Letter-Latin-Lower-F : begin
create-glyph 'f.serifless' : glyph-proc
include : MarkSet.b
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH
include : StandardSmallFShape [DivFrame 1] 0.95 fbar
create-glyph 'f.phoneticLeft' : glyph-proc
include : MarkSet.b
include : StandardSmallFShape [DivFrame 1] 1 fbarFH
include : StandardSmallFShape [DivFrame 1] 1 fbar
if SLAB : include : SmallFBottomSerif
create-glyph 'f.serifed' : glyph-proc
include : MarkSet.b
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH
include : StandardSmallFShape [DivFrame 1] 0.95 fbar
include : SmallFBottomSerif
create-glyph 'fltail' 0x192 : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 1 fbarFH 2
include : StandardSmallFShape [DivFrame 1] 1 fbar 2
create-glyph 'f.tailed' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 1 fbarFH 2
include : StandardSmallFShape [DivFrame 1] 1 fbar 2
create-glyph 'f.extended' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH 1
include : StandardSmallFShape [DivFrame 1] 0.95 fbar 1
create-glyph 'f.seriflessCrossbarAtXHeight' : glyph-proc
include : MarkSet.b
@ -5989,11 +5988,11 @@ glyph-block Letter-Latin-Lower-F : begin
define df : DivFrame para.diversityF
set-width df.width
include : df.markSet.b
include : NarrowFShape df 0.5 fbarFH
include : NarrowFShape df 0.5 fbar
create-glyph 'f.flatHook' : glyph-proc
include : MarkSet.b
include : NarrowFShape [DivFrame 1] 1 fbarFH
include : NarrowFShape [DivFrame 1] 1 fbar
create-glyph 'f.flatHookCrossbarAtXHeight' : glyph-proc
include : MarkSet.b
@ -6001,7 +6000,7 @@ glyph-block Letter-Latin-Lower-F : begin
create-glyph 'f.flatHookSerifed' : glyph-proc
include : MarkSet.b
include : NarrowFShape [DivFrame 1] 1 fbarFH
include : NarrowFShape [DivFrame 1] 1 fbar
include : WithTransform [Translate ((RightSB - SB) * 0.035) 0] : SmallFBottomSerif
create-glyph 'f.flatHookSerifedCrossbarAtXHeight' : glyph-proc
@ -6011,7 +6010,7 @@ glyph-block Letter-Latin-Lower-F : begin
create-glyph 'f.flatHookTailed' : glyph-proc
include : MarkSet.if
include : NarrowFShape [DivFrame 1] 1 fbarFH 2
include : NarrowFShape [DivFrame 1] 1 fbar 2
create-glyph 'f.flatHookTailedCrossbarAtXHeight' : glyph-proc
include : MarkSet.if
@ -6019,7 +6018,7 @@ glyph-block Letter-Latin-Lower-F : begin
create-glyph 'f.flatHookExtended' : glyph-proc
include : MarkSet.if
include : NarrowFShape [DivFrame 1] 1 fbarFH 1
include : NarrowFShape [DivFrame 1] 1 fbar 1
create-glyph 'f.flatHookExtendedCrossbarAtXHeight' : glyph-proc
include : MarkSet.if

View file

@ -324,7 +324,6 @@ export : define DesignParameters : object
upperEBarPos : lambda [slab] : if slab 0.52 0.53
# Fine adjustments
fbarStrokeAdj 0.25
fbarStrokeAdjFH 0.125
superness 2.275
tightHookSuperness 2.30

View file

@ -656,13 +656,13 @@ selector."cyrl/te.italic" = "normal"
rank = 7
description = "Earless (corner top-left) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessCornerDoubleArchTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-corner-double-arch-shortleg-tailed]
rank = 8
description = "Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessCornerDoubleArchShortlegTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-rounded-double-arch]
rank = 9
@ -680,13 +680,13 @@ selector."cyrl/te.italic" = "normal"
rank = 11
description = "Earless (rounded top-left) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessRoundedDoubleArchTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-rounded-double-arch-shortleg-tailed]
rank = 12
description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessRoundedDoubleArchShortlegTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-single-arch]
rank = 13
@ -704,13 +704,13 @@ selector."cyrl/te.italic" = "normal"
rank = 15
description = "Earless (single-arch) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessSingleArchTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-single-arch-shortleg-tailed]
rank = 16
description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessSingleArchShortlegTailed'
selector."cyrl/te.italic" = "normal"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.motion-serifed]
rank = 17
@ -728,13 +728,13 @@ selector."cyrl/te.italic" = "motionSerifed"
rank = 19
description = "`m` with motion serifs, normal middle leg touching baseline, and a curly tail"
selector.m = 'motionSerifedTailed'
selector."cyrl/te.italic" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifedTailed"
[prime.m.variants.motion-serifed-shortleg-tailed]
rank = 20
description = "`m` with motion serifs, a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'motionSerifedShortlegTailed'
selector."cyrl/te.italic" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifedTailed"

View file

@ -857,7 +857,7 @@ const JavaScriptFromPtl = computed("scripts-js-from-ptl", async target => {
return ptl.map(x => replaceExt(".js", x));
});
function replaceExt(extNew, file) {
return Path.join(Path.dirname(file), Path.basename(file, Path.extname(file)) + extNew);
return Path.posix.join(Path.dirname(file), Path.basename(file, Path.extname(file)) + extNew);
}
const CompiledJs = file.make(
@ -871,13 +871,15 @@ const CompiledJs = file.make(
);
const Scripts = task("scripts", async target => {
await target.need(Parameters);
const [_jsFromPtl] = await target.need(JavaScriptFromPtl);
const [js] = await target.need(ScriptFiles("js"));
const jsFromPtl = new Set(_jsFromPtl);
const [jsFromPtlList] = await target.need(JavaScriptFromPtl);
const [jsList] = await target.need(ScriptFiles("js"));
const jsFromPtlSet = new Set(jsFromPtlList);
let subGoals = [];
for (const item of jsFromPtl) subGoals.push(CompiledJs(item));
for (const item of js) if (!jsFromPtl.has(js)) subGoals.push(sfu(item));
for (const js of jsList) {
if (jsFromPtlSet.has(js)) subGoals.push(CompiledJs(js));
else subGoals.push(sfu(js));
}
await target.need(subGoals);
});
const UtilScripts = task("util-scripts", async target => {