Add variant selection for Guillemets (#1899).

This commit is contained in:
be5invis 2023-08-19 01:33:37 -07:00
parent fdcde32d71
commit 02e8fe60ca
4 changed files with 77 additions and 18 deletions

View file

@ -12,6 +12,7 @@
* Make below marks to avoid bottom-right Ogoneks (#1789).
* Use oval shape for Empty Set symbols to distinguish with O-Slash (#1822).
* Implement leaning mark mechanism for `F`, `L`, `P`, `b`, `d`, `h`, `k`, `p`, `q`, `r` to get better mark placement. Now, "narrow" marks will align to these letters' extension parts (#1851).
* Add variant selection for Guillemets (#1899).
* Fix detached cedilla in Hookless asymmetric LATIN SMALL LETTER T WITH CEDILLA (`U+0163`) (#1914).
* Fix broken hookless/tailless/asymmetric `t` variants in `ſt` ligature (`U+FB05`) (#1915).
* Remove unnecessary tailed variants for Cyrillic Shha with Descender (`U+0527`) (#1916).

View file

@ -9,32 +9,54 @@ glyph-block Symbol-Punctuation-Guillemet : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
create-glyph 'singleGuillemetLeft' 0x2039 : glyph-proc
create-glyph 'singleGuillemetLeft.straight' : glyph-proc
local top : mix SymbolMid ParenTop 0.5
local bot : mix SymbolMid ParenBot 0.5
local mid : mix bot top 0.5
local extension 0.55
local cor 1
local sw : AdviceStroke 3.5
local sw : AdviceStroke 3
local fine : AdviceStroke 4
include : dispiro
widths.center sw
g4 [mix Middle RightSB extension] top
quadControls 0.4 0.75
g4 [mix Middle SB extension] [mix top bot 0.5] [widths.center.heading (cor * sw) Leftward]
include : intersection [MaskAbove mid] : dispiro
flat [mix Middle SB extension] mid [widths.rhs sw]
curl [mix Middle RightSB extension] top [widths.center fine]
include : dispiro
widths.center (sw * cor)
g4 [mix Middle SB extension] [mix top bot 0.5] [heading Rightward]
quadControls (1 - 0.4) (1 - 0.75)
g4 [mix Middle RightSB extension] bot [widths.center sw]
include : intersection [MaskBelow mid] : dispiro
flat [mix Middle SB extension] mid [widths.lhs sw]
curl [mix Middle RightSB extension] bot [widths.center fine]
include : Translate (-(RightSB - SB) * 0.05) 0
create-glyph 'guillemetLeft' 0xAB : glyph-proc
include : refer-glyph "singleGuillemetLeft"
create-glyph 'singleGuillemetLeft.curly' : glyph-proc
local top : mix SymbolMid ParenTop 0.5
local bot : mix SymbolMid ParenBot 0.5
local mid : mix bot top 0.5
local extension 0.55
local sw : AdviceStroke 3
local fine : AdviceStroke 4
include : intersection [MaskAbove mid] : dispiro
g4 [mix Middle SB extension] (mid + sw * 0.25) [widths.rhs sw]
quadControls 0.6 0.3
g4 [mix Middle RightSB extension] top [widths.center fine]
include : intersection [MaskBelow mid] : dispiro
g4 [mix Middle SB extension] (mid - sw * 0.25) [widths.lhs sw]
quadControls 0.6 0.3
g4 [mix Middle RightSB extension] bot [widths.center fine]
include : VBar.l [mix Middle SB extension] (mid - sw * 0.25) (mid + sw * 0.25) sw
include : Translate (-(RightSB - SB) * 0.05) 0
select-variant 'singleGuillemetLeft' 0x2039 (follow -- 'guillemet')
derive-glyphs 'guillemetLeft' 0xAB 'singleGuillemetLeft' : function [src sel] : glyph-proc
include : refer-glyph src
include : Translate ((RightSB - SB) * 0.5) 0
include : refer-glyph "singleGuillemetLeft"
include : refer-glyph src
include : Translate (-(RightSB - SB) * 0.25) 0
turned 'singleGuillemetRight' 0x203A "singleGuillemetLeft" Middle SymbolMid

View file

@ -6569,6 +6569,24 @@ selectorAffix."micro" = "serifed"
[prime.guillemet]
sampler = "« »"
samplerExplain = "Guillemets"
nonBreakingTagForNewVariantSelector = "VXAC" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "symbol"
[prime.guillemet.variants.straight]
rank = 1
description = "Straight Guillemets (`« »`)"
selector."guillemet" = "straight"
[prime.guillemet.variants.curly]
rank = 2
description = "Curly Guillemets (`« »`)"
selector."guillemet" = "curly"
[prime.lig-ltgteq]
sampler = "<= >="
samplerExplain = "Less-equal and Greater-equal ligations"
@ -6845,6 +6863,7 @@ diacritic-dot = "round"
partial-derivative = "curly-bar"
lower-eth = "curly-bar"
micro-sign = "toothed-serifless"
guillemet = "curly"
lig-neq = "slightly-slanted"
lig-equal-chain = "with-notch"
lig-hyphen-chain = "with-notch"
@ -6944,6 +6963,7 @@ cyrl-capital-u = "straight-turn-serifed"
cyrl-capital-ya = "straight-serifed"
cyrl-ya = "straight-serifed"
micro-sign = "toothed-serifed"
guillemet = "straight"
[composite.slab.upright-oblique]
d = "toothed-serifed"
@ -7035,6 +7055,7 @@ number-sign = "slanted"
at = "fourfold"
percent = "rings-continuous-slash"
lower-eth = "straight-bar"
guillemet = "straight"
[composite.ss01.slab-override.design]
capital-d = "more-rounded-bilateral-serifed"
@ -7115,6 +7136,7 @@ partial-derivative = "straight-bar"
lower-eth = "straight-bar"
punctuation-dot = "square"
diacritic-dot = "square"
guillemet = "straight"
[composite.ss02.slab-override.design]
capital-j = "serifed"
@ -7177,6 +7199,7 @@ at = "fourfold"
question = "corner-flat-hooked"
lower-eth = "straight-bar"
micro-sign = "tailed-serifless"
guillemet = "straight"
[composite.ss03.italic]
a = "single-storey-serifless"
@ -7267,6 +7290,7 @@ lower-eth = "straight-bar"
micro-sign = "tailed-serifless"
punctuation-dot = "square"
diacritic-dot = "square"
guillemet = "straight"
[composite.ss04.slab-override.design]
capital-d = "more-rounded-bilateral-serifed"
@ -7334,6 +7358,7 @@ ampersand = "et-toothless-corner"
at = "compact"
cent = "open"
percent = "rings-continuous-slash"
guillemet = "straight"
lig-ltgteq = "slanted"
lig-equal-chain = "without-notch"
@ -7398,6 +7423,7 @@ percent = "rings-continuous-slash"
bar = "force-upright"
punctuation-dot = "square"
diacritic-dot = "square"
guillemet = "straight"
[composite.ss06.slab-override.design]
capital-d = "more-rounded-bilateral-serifed"
@ -7459,6 +7485,7 @@ pilcrow = "low"
number-sign = "slanted"
at = "fourfold"
percent = "rings-continuous-slash"
guillemet = "straight"
[composite.ss07.slab-override.design]
capital-d = "more-rounded-bilateral-serifed"
@ -7545,6 +7572,7 @@ dollar = "open"
cent = "open"
percent = "dots"
paren = "large-contour"
guillemet = "straight"
lig-ltgteq = "slanted"
lig-neq = "slightly-slanted-dotted"
lig-equal-chain = "with-notch"
@ -7640,6 +7668,7 @@ number-sign = "slanted"
dollar = "open"
bar = "force-upright"
micro-sign = "tailed-serifless"
guillemet = "straight"
lig-neq = "more-slanted"
[composite.ss09.italic]
@ -7703,6 +7732,7 @@ underscore = "low"
pilcrow = "low"
micro-sign = "toothless-rounded-serifless"
percent = "rings-continuous-slash"
guillemet = "straight"
[composite.ss10.italic]
i = "serifed-flat-tailed"
@ -7804,6 +7834,7 @@ dollar = "open"
cent = "open"
micro-sign = "toothless-corner-serifless"
percent = "rings-continuous-slash"
guillemet = "straight"
[composite.ss12.italic]
a = "single-storey-earless-corner-tailed"
@ -7956,6 +7987,7 @@ percent = "rings-continuous-slash"
lower-eth = "straight-bar"
lig-ltgteq = "slanted"
question = "corner-flat-hooked"
guillemet = "straight"
lig-neq = "more-slanted"
lig-equal-chain = "without-notch"
@ -8029,6 +8061,7 @@ number-sign = "slanted-open"
ampersand = "upper-open"
question = "corner"
brace = "curly-flat-boundary"
guillemet = "straight"
[composite.ss15.italic]
a = "single-storey-serifless"
@ -8128,6 +8161,7 @@ number-sign = "slanted"
percent = "rings-continuous-slash"
lower-eth = "straight-bar"
micro-sign = "toothed-bottom-right-serifed"
guillemet = "straight"
[composite.ss16.slab-override.design]
capital-d = "more-rounded-bilateral-serifed"
@ -8200,6 +8234,7 @@ micro-sign = "tailed-serifless"
punctuation-dot = "square"
diacritic-dot = "square"
brace = "curly-flat-boundary"
guillemet = "straight"
[composite.ss17.italic]
a = "single-storey-tailed"
@ -8280,6 +8315,7 @@ question = "corner"
number-sign = "slanted"
percent = "rings-continuous-slash"
micro-sign = "tailed-serifless"
guillemet = "straight"
[composite.ss18.italic]
f = "extended-crossbar-at-x-height"

View file

@ -3,8 +3,8 @@ import * as themes from "../themes/index.mjs";
// prettier-ignore
const ssStrings = [
["ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ", "abc.def.ghi.jkl.mno.pqrs.tuv.wxyz"],
["¢þſßðΓΛΔ αδιλμξ КУЗЯЖэльфязычникж", "float il1[]={1-2/3.4,5+6=7/8%90};"],
["1234567890 ,._-+= >< ¯-¬_ >~–÷+×<", "{*}[]()<>`+-=$/#_%^@\\&|~?'\" !,.;:"],
["¢þſßð ΓΛΔαδιλμξ КУЗЯЖэльфязычникж", "float il1[]={1-2/3.4,5+6=7/8%90};"],
["1234567890 ,._-+= >« ¯-¬_ »~–÷+×<", "{*}[]()<>`+-=$/#_%^@\\&|~?'\" !,.;:"],
["!iIlL17|¦ coO08BbDQ $5SZ2zsz 96G&", [..."dbqp E3 g9qCGQ vvwVVW ", "<=", " ", "!="," ","==", " ", ">="]]
];