* Add Characters
- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`); - MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`); - MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`); - MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`); - MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`); - MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`); - MODIFIER LETTER RAISED COLON (`U+02F8`); - MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`); - MODIFIER LETTER END HIGH TONE (`U+02FA`); - MODIFIER LETTER BEGIN LOW TONE (`U+02FB`); - MODIFIER LETTER END LOW TONE (`U+02FC`); - MODIFIER LETTER SHELF (`U+02FD`); - MODIFIER LETTER OPEN SHELF (`U+02FE`); - MODIFIER LETTER LOW LEFT ARROW (`U+02FF`); - COMBINING LEFT ARROW BELOW (`U+20EE`); - COMBINING RIGHT ARROW BELOW (`U+20EF`);
This commit is contained in:
parent
eabfd4b59e
commit
0c2d989b76
9 changed files with 101 additions and 13 deletions
17
changes/15.1.0.md
Normal file
17
changes/15.1.0.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
* Add Characters
|
||||
- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
|
||||
- MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
|
||||
- MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
|
||||
- MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
|
||||
- MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
|
||||
- MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
|
||||
- MODIFIER LETTER RAISED COLON (`U+02F8`);
|
||||
- MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
|
||||
- MODIFIER LETTER END HIGH TONE (`U+02FA`);
|
||||
- MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
|
||||
- MODIFIER LETTER END LOW TONE (`U+02FC`);
|
||||
- MODIFIER LETTER SHELF (`U+02FD`);
|
||||
- MODIFIER LETTER OPEN SHELF (`U+02FE`);
|
||||
- MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
|
||||
- COMBINING LEFT ARROW BELOW (`U+20EE`);
|
||||
- COMBINING RIGHT ARROW BELOW (`U+20EF`);
|
|
@ -182,6 +182,23 @@ glyph-block Mark-Below : begin
|
|||
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
|
||||
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
||||
|
||||
create-glyph 'shelfBelow' : glyph-proc
|
||||
set-width 0
|
||||
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
|
||||
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
||||
|
||||
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
|
||||
include : VBar (RightSB - Width) belowMarkBot belowMarkTop (markFine * 2)
|
||||
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
|
||||
|
||||
create-glyph 'openShelfBelow' : glyph-proc
|
||||
set-width 0
|
||||
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
|
||||
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
||||
|
||||
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
|
||||
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
|
||||
|
||||
# Turned below marks
|
||||
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
|
||||
derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc
|
||||
|
@ -230,6 +247,8 @@ glyph-block Mark-Below : begin
|
|||
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
|
||||
TurnAboveMarkToBelow 'leftHalfCircleBelow' 0x31C 'rightHalfCircleAbove'
|
||||
TurnAboveMarkToBelow 'rightHalfCircleBelow' 0x339 'leftHalfCircleAbove'
|
||||
TurnAboveMarkToBelow 'leftArrowBelow' 0x20EE 'rightArrowAbove'
|
||||
TurnAboveMarkToBelow 'rightArrowBelow' 0x20EF 'leftArrowAbove'
|
||||
|
||||
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
|
||||
set-width 0
|
||||
|
|
|
@ -9,7 +9,7 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Mark-Shared-Metrics : markExtend
|
||||
glyph-block-import Mark-Above : aboveMarkTop
|
||||
glyph-block-import Mark-Above : aboveMarkTop aboveMarkMid
|
||||
glyph-block-import Symbol-Punctuation-Quotes-And-Primes
|
||||
|
||||
define [MarkZoom w] : glyph-proc
|
||||
|
@ -48,3 +48,12 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
|
|||
include [refer-glyph 'markBaseSpace'] AS_BASE ALSO_METRICS
|
||||
include [refer-glyph 'ringAbove']
|
||||
include : MarkZoom currentGlyph.advanceWidth
|
||||
|
||||
do "spacing centered marks"
|
||||
define shift : ApparentTranslate 0 (SymbolMid - aboveMarkMid)
|
||||
derive-composites 'mdfMidGrave' 0x2F4 'markBaseSpace' 'graveAbove' shift
|
||||
derive-composites 'mdfMidDoubleGrave' 0x2F5 'markBaseSpace' 'doubleGraveAbove' shift
|
||||
derive-composites 'mdfMidDoubleAcute' 0x2F6 'markBaseSpace' 'doubleAcuteAbove' shift
|
||||
|
||||
derive-composites 'mdfShelf' 0x2FD 'markBaseSpace' 'shelfBelow'
|
||||
derive-composites 'mdfOpenShelf' 0x2FE 'markBaseSpace' 'openShelfBelow'
|
||||
|
|
|
@ -11,6 +11,8 @@ glyph-block Symbol-Other-Phonetic : begin
|
|||
glyph-block-import Common-Derivatives
|
||||
|
||||
local triangleSize : Math.min (PeriodRadius) (XH / 5)
|
||||
local toneMarkLeft : mix SB RightSB 0.1
|
||||
local toneMarkRight : Width - toneMarkLeft
|
||||
|
||||
create-glyph 'trianglecolon' 0x2D0 : glyph-proc
|
||||
include : union
|
||||
|
@ -29,23 +31,25 @@ glyph-block Symbol-Other-Phonetic : begin
|
|||
corner Middle (XH - triangleSize * 2.75)
|
||||
corner (Middle + triangleSize * 1.35) XH
|
||||
|
||||
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
|
||||
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
|
||||
define [yOfToneNeutral tone] : mix DotRadius (CAP - DotRadius) (tone / 4)
|
||||
define [yOfToneDepart a b p] : mix (CAP * a + OperatorStroke / 2) (CAP * b - OperatorStroke / 2) p
|
||||
|
||||
foreach tone [range 4 downtill 0] : begin
|
||||
create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc
|
||||
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
|
||||
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
|
||||
include : VBarRight toneMarkRight 0 CAP OperatorStroke
|
||||
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfTone tone] OperatorStroke
|
||||
create-glyph ('toneSandhi' + tone) (0xA712 + 4 - tone) : glyph-proc
|
||||
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
|
||||
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
|
||||
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
|
||||
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfTone tone] OperatorStroke
|
||||
create-glyph ('toneNeutral' + tone) (0xA708 + 4 - tone) : glyph-proc
|
||||
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
|
||||
include : DotAt ([mix SB RightSB 0.1] + DotRadius) [yOfToneNeutral tone] DotRadius
|
||||
include : VBarRight toneMarkRight 0 CAP OperatorStroke
|
||||
include : DotAt (toneMarkLeft + DotRadius) [yOfToneNeutral tone] DotRadius
|
||||
create-glyph ('toneSandhiNeutral' + tone) (0xA70D + 4 - tone) : glyph-proc
|
||||
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
|
||||
include : DotAt ([mix SB RightSB 0.9] - DotRadius) [yOfToneNeutral tone] DotRadius
|
||||
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
|
||||
include : DotAt (toneMarkRight - DotRadius) [yOfToneNeutral tone] DotRadius
|
||||
|
||||
# Connected tones
|
||||
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
|
||||
create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc
|
||||
Joining.set currentGlyph Joining.Classes.Right
|
||||
|
@ -110,3 +114,22 @@ glyph-block Symbol-Other-Phonetic : begin
|
|||
create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc
|
||||
include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS
|
||||
Joining.set currentGlyph Joining.Classes.Mid
|
||||
|
||||
# Departing tones
|
||||
local DepartingToneConfig : list
|
||||
list 'departingToneYin' 0x2EA 0 0.5 0
|
||||
list 'departingToneYang' 0x2EB 0 0.5 0.5
|
||||
list 'beginHighTone' 0x2F9 0.6 1 1.0
|
||||
list 'beginLowTone' 0x2FB 0 0.4 0
|
||||
foreach { name code a b pos } [items-of DepartingToneConfig] : begin
|
||||
create-glyph name code : glyph-proc
|
||||
include : VBarLeft toneMarkLeft (CAP * a) (CAP * b) OperatorStroke
|
||||
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfToneDepart a b pos] OperatorStroke
|
||||
|
||||
local EnteringToneConfig : list
|
||||
list 'endHighTone' 0x2FA 0.6 1 1.0
|
||||
list 'endLowTone' 0x2FC 0 0.4 0
|
||||
foreach { name code a b pos } [items-of EnteringToneConfig] : begin
|
||||
create-glyph name code : glyph-proc
|
||||
include : VBarRight toneMarkRight (CAP * a) (CAP * b) OperatorStroke
|
||||
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfToneDepart a b pos] OperatorStroke
|
||||
|
|
|
@ -63,9 +63,10 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
|
|||
derive-glyphs 'revDoubleQuote' 0x201F 'revSingleQuote' DoubleQuoteProc
|
||||
derive-glyphs 'revLowDoubleQuote' 0x2E42 'revLowSingleQuote' DoubleQuoteProc
|
||||
|
||||
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
|
||||
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
|
||||
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
|
||||
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
|
||||
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
|
||||
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
|
||||
alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote'
|
||||
|
||||
# Primes
|
||||
create-glyph 'prime' 0x2032 : glyph-proc
|
||||
|
|
|
@ -150,6 +150,14 @@ glyph-block Symbol-Punctuation-Small : begin
|
|||
include : DrawAt df.middle [mix dr (XH - dr) k] (dr - overshoot)
|
||||
include : DrawAt df.middle [mix dr (XH - dr) (1 - k)] (dr - overshoot)
|
||||
|
||||
create-glyph "modifierLetterRaisedColon.\(suffix)" : glyph-proc
|
||||
local df : DivFrame para.diversityII
|
||||
set-width df.width
|
||||
local k 0.9
|
||||
local dr : DotRadius * kDotRadius
|
||||
include : DrawAt df.middle (CAP - [mix dr (XH - dr) k]) (dr - overshoot)
|
||||
include : DrawAt df.middle (CAP - [mix dr (XH - dr) (1 - k)]) (dr - overshoot)
|
||||
|
||||
create-glyph "semicolon.\(suffix)" : glyph-proc
|
||||
include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS
|
||||
include [refer-glyph "xhPeriod.\(suffix)"]
|
||||
|
@ -161,6 +169,7 @@ glyph-block Symbol-Punctuation-Small : begin
|
|||
select-variant 'colon' ':' (follow -- 'punctuationDot')
|
||||
select-variant 'colon/mid' (follow -- 'punctuationDot')
|
||||
select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot')
|
||||
select-variant 'modifierLetterRaisedColon' 0x2F8 (follow -- 'punctuationDot')
|
||||
select-variant 'semicolon' ';' (follow -- 'punctuationDot')
|
||||
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
|
||||
alias 'greekquestion' 0x37E 'semicolon'
|
||||
|
|
|
@ -140,6 +140,7 @@ export : define decompositionOverrides : object
|
|||
."\u02F0" "\uE00D\uE004"
|
||||
."\u02F1" "\uE00D\u0354"
|
||||
."\u02F2" "\uE00D\u0355"
|
||||
."\u02FF" "\uE00D\u20EE"
|
||||
|
||||
."\u1FED" "\uE00D\u0308\u0300"
|
||||
."\u1FEE" "\uE00D\u0308\u0301"
|
||||
|
|
7
utility/copy-char-name-to-markdown.js
Normal file
7
utility/copy-char-name-to-markdown.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
const ucdNames = require("@unicode/unicode-14.0.0/Names");
|
||||
|
||||
for (let i = 2; i < process.argv.length; i++) {
|
||||
const lch = parseInt(process.argv[i], 16);
|
||||
const name = ucdNames.get(lch);
|
||||
console.log(" -", name, `(\`U+${lch.toString(16).toUpperCase().padStart(4, "0")}\`);`);
|
||||
}
|
|
@ -649,6 +649,7 @@ const PagesFontExport = task.group(`pages:font-export`, async (target, gr) => {
|
|||
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
|
||||
await target.need(GroupWebFonts(gr), de(outDir));
|
||||
await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2"));
|
||||
await Delay(500);
|
||||
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages);
|
||||
await rm(Path.resolve(outDir, "ttf"));
|
||||
});
|
||||
|
@ -660,6 +661,7 @@ const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target,
|
|||
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
|
||||
await target.need(GroupTTFs(gr), de(outDir));
|
||||
await cp(`${DIST}/${gr}/ttf`, Path.resolve(outDir, "ttf"));
|
||||
await Delay(500);
|
||||
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast);
|
||||
await rm(Path.resolve(outDir, "woff2"));
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue