Added basic Cyrillic support (Russian only).
This commit is contained in:
parent
6c83c9c6ca
commit
b56990b24a
|
@ -259,8 +259,15 @@ define [select-variant name unicode default] : begin {
|
|||
set unicodeGlyphs.(chosenGlyph.unicode`[chosenGlyph.unicode.length - 1]) chosenGlyph
|
||||
}
|
||||
}
|
||||
define [italic-variant name unicode] : create-glyph name : glyph-construction {
|
||||
if [para.italicangle > 0] {
|
||||
then : include glyphs.[name + '.italic'] AS_BASE
|
||||
else : include glyphs.[name + '.upright'] AS_BASE
|
||||
}
|
||||
if unicode : assign-unicode unicode
|
||||
}
|
||||
define [alias newid unicode oldid] : create-glyph newid : glyph-construction {
|
||||
assign-unicode unicode
|
||||
if unicode : assign-unicode unicode
|
||||
include glyphs`oldid AS_BASE
|
||||
}
|
||||
|
||||
|
|
|
@ -275,6 +275,18 @@ define customDecompositions (
|
|||
."\u013C" "l\u0326"
|
||||
."\u0122" "G\u0326"
|
||||
."\u0123" "g\u0312"
|
||||
."\u1FED" " \u0308\u0300"
|
||||
."\u1FEE" " \u0308\u0301"
|
||||
."\u1FEF" " \u0300"
|
||||
."\u1FFD" " \u0301"
|
||||
."\u1FFE" " \u0314"
|
||||
."\u1FBD" " \u0313"
|
||||
."\u1FBE" " \u0345"
|
||||
."\u1FBF" " \u0313"
|
||||
."\u1FC0" " \u0342"
|
||||
."\u1FC1" " \u0308\u0342"
|
||||
."\u0384" " \u0301"
|
||||
."\u0385" " \u0308\u0301"
|
||||
)
|
||||
define [decompositionModify s] : s.replace [regex '\u0313\u0300'] "\u1FCD"
|
||||
:.replace [regex '\u0313\u0301'] "\u1FCE"
|
||||
|
@ -296,10 +308,11 @@ foreach code [range 0x00A0 0xFFFF] : if [not unicodeGlyphs`code] : begin {
|
|||
if [isAboveMark parts`j] : set hasMarkAbove true
|
||||
}
|
||||
if allFound : begin {
|
||||
if [parts.0 === glyphs.i && hasMarkAbove] : parts.0 = glyphs.dotlessi
|
||||
local namingParts : parts.slice 0
|
||||
if [[parts.0 === glyphs.i || parts.0 === glyphs.ukrainiani] && hasMarkAbove] : parts.0 = glyphs.dotlessi
|
||||
if [parts.0 === glyphs.j && hasMarkAbove] : parts.0 = glyphs.dotlessj
|
||||
|
||||
create-glyph [parts.map [[part] -> part.name] :.join '_'] : glyph-construction {
|
||||
create-glyph [namingParts.map [[part] -> part.name] :.join '_'] : glyph-construction {
|
||||
assign-unicode code
|
||||
include parts.0 AS_BASE
|
||||
foreach part [items-of : parts.slice 1] : include part
|
||||
|
|
|
@ -228,8 +228,8 @@ define [smallo u d l r _width _sma _smb] : glyph-construction {
|
|||
:.heads-to LEFTWARD
|
||||
}
|
||||
else : begin {
|
||||
local ymiddlea : [u - sma + d + smb] / 2
|
||||
local ymiddleb : [u - smb + d + sma] / 2
|
||||
local ymiddlea : mix d u [smb / [sma + smb]]
|
||||
local ymiddleb : mix d u [sma / [sma + smb]]
|
||||
include : create-stroke
|
||||
:.set-transform globalTransform
|
||||
:.start-from middle [u - O]
|
||||
|
@ -255,6 +255,9 @@ define [HBar xleft xright y _fine] : glyph-construction {
|
|||
:.line-to xright y
|
||||
:.heads-to RIGHTWARD
|
||||
}
|
||||
define [HBarTop xl xr y _fine] : HBar xl xr [y - [fallback _fine STROKE] * 0.5] _fine
|
||||
define [HBarBottom xl xr y _fine] : HBar xl xr [y + [fallback _fine STROKE] * 0.5] _fine
|
||||
define [HOverlayBar xleft xright y] : HBar xleft xright y [adviceBlackness 5]
|
||||
define [VBar x ydown yup _fine] : glyph-construction {
|
||||
local fine : [fallback _fine STROKE] / 2
|
||||
include : create-stroke
|
||||
|
@ -265,7 +268,8 @@ define [VBar x ydown yup _fine] : glyph-construction {
|
|||
:.line-to x yup
|
||||
:.heads-to [if [ydown < yup] UPWARD DOWNWARD]
|
||||
}
|
||||
define [HOverlayBar xleft xright y] : HBar xleft xright y [adviceBlackness 5]
|
||||
define [VBarLeft x yd yu _fine] : VBar [x + [fallback _fine STROKE] * 0.5 * ITALICCOR] yd yu _fine
|
||||
define [VBarRight x yd yu _fine] : VBar [x - [fallback _fine STROKE] * 0.5 * ITALICCOR] yd yu _fine
|
||||
|
||||
# Common transformations
|
||||
define [FlipAround x y sx sy] : glyph-construction {
|
||||
|
|
412
glyphs/cyrillic-basic.patel
Normal file
412
glyphs/cyrillic-basic.patel
Normal file
|
@ -0,0 +1,412 @@
|
|||
###### Cyrillic glyphs
|
||||
|
||||
alias 'cyrA' 0x410 'A'
|
||||
alias 'cyra' 0x430 'a'
|
||||
alias 'Ve' 0x412 'B'
|
||||
alias 'Ghe' 0x413 'Gamma'
|
||||
alias 'Ie' 0x415 'E'
|
||||
alias 'ie' 0x435 'e'
|
||||
alias 'Ka' 0x41A 'K'
|
||||
alias 'ka' 0x43A 'kappa'
|
||||
alias 'Em' 0x41C 'M'
|
||||
alias 'En' 0x41D 'H'
|
||||
alias 'cyrO' 0x41E 'O'
|
||||
alias 'cyro' 0x43e 'o'
|
||||
alias 'Pe' 0x41F 'Pi'
|
||||
alias 'pe.upright' null 'pi'
|
||||
alias 'pe.italic' null 'n'
|
||||
italic-variant 'pe' 0x43f
|
||||
alias 'Er' 0x420 'P'
|
||||
alias 'er' 0x440 'p'
|
||||
alias 'Es' 0x421 'C'
|
||||
alias 'es' 0x441 'c'
|
||||
alias 'Te' 0x422 'T'
|
||||
alias 'te.upright' null 'tau'
|
||||
alias 'te.italic' null 'm'
|
||||
italic-variant 'te' 0x442
|
||||
alias 'Ef' 0x424 'Phi'
|
||||
alias 'ef' 0x444 'phi'
|
||||
alias 'Ha' 0x425 'X'
|
||||
alias 'ha' 0x445 'x'
|
||||
alias 'cyru' 0x443 'y'
|
||||
alias 'ukrainianI' 0x406 'I'
|
||||
alias 'ukrainiani' 0x456 'i'
|
||||
alias 'Je' 0x408 'J'
|
||||
alias 'je' 0x458 'j'
|
||||
alias 'Dze' 0x405 'S'
|
||||
alias 'dze' 0x455 's'
|
||||
|
||||
### Russian letters
|
||||
define [YeriShape top _left _right _fine] : glyph-construction {
|
||||
local fine : fallback _fine STROKE
|
||||
local left : fallback _left SB
|
||||
local right : fallback _right RIGHTSB
|
||||
|
||||
local bowl : top * 0.55 + HALFSTROKE
|
||||
local tkappa [COKAPPA - 0.22]
|
||||
local bkappa [COKAPPA - 0.2]
|
||||
|
||||
local turnbottom : bowl / 2
|
||||
|
||||
include : create-stroke
|
||||
:.start-from [left + STROKE * 0.2] 0
|
||||
:.heads-to RIGHTWARD
|
||||
:.set-width fine 0
|
||||
:.line-to [right - turnbottom * [right - left] / [RIGHTSB - SB]] 0
|
||||
:.arc-hv-to [right - O] turnbottom
|
||||
:.arc-vh-to [right - turnbottom * [right - left] / [RIGHTSB - SB]] bowl
|
||||
:.line-to [left + STROKE * 0.2] bowl
|
||||
:.heads-to LEFTWARD
|
||||
|
||||
include : VBarLeft left 0 top fine
|
||||
}
|
||||
create-glyph 'Yeri' : glyph-construction {
|
||||
assign-unicode 0x42C
|
||||
include capitalMarks
|
||||
include : YeriShape CAP SB RIGHTSB
|
||||
}
|
||||
create-glyph 'yeri' : glyph-construction {
|
||||
assign-unicode 0x44C
|
||||
include eMarks
|
||||
include : YeriShape XH SB RIGHTSB
|
||||
}
|
||||
create-glyph 'Be' : glyph-construction {
|
||||
assign-unicode 0x411
|
||||
include glyphs.Yeri AS_BASE
|
||||
include : HBar SB [mix SB RIGHTSB 0.9] [CAP - HALFSTROKE]
|
||||
}
|
||||
define [CyrIShape top] : glyph-construction {
|
||||
local topstroke : adviceBlackness 4
|
||||
local halftopstroke : topstroke / 2
|
||||
include : create-stroke
|
||||
:.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0
|
||||
:.line-to RIGHTSB [top * 0.4] :.heads-to UPWARD
|
||||
:.line-to RIGHTSB top :.heads-to UPWARD :.set-width topstroke 0
|
||||
include : create-stroke
|
||||
:.start-from SB 0 :.heads-to UPWARD :.set-width 0 topstroke
|
||||
:.line-to SB [top * 0.6] :.heads-to UPWARD :.set-width 0 STROKE
|
||||
:.line-to SB top :.heads-to UPWARD
|
||||
include : create-stroke
|
||||
:.start-from [SB + halftopstroke] 0 :.heads-to UPWARD :.set-width 0 topstroke
|
||||
:.line-to [RIGHTSB - topstroke - halftopstroke] top :.heads-to UPWARD
|
||||
}
|
||||
create-glyph 'cyrI' : glyph-construction {
|
||||
assign-unicode 0x418
|
||||
include capitalMarks
|
||||
include : CyrIShape CAP
|
||||
}
|
||||
create-glyph 'cyri.upright' : glyph-construction {
|
||||
include eMarks
|
||||
dont-export
|
||||
include : CyrIShape XH
|
||||
}
|
||||
create-glyph 'cyri.italic' : glyph-construction {
|
||||
dont-export
|
||||
include glyphs.u AS_BASE
|
||||
}
|
||||
italic-variant 'cyri' 0x438
|
||||
create-glyph 'cyrU' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 0x423
|
||||
include capitalMarks
|
||||
|
||||
local xbottom : mix SB RIGHTSB 0.28
|
||||
local turnp : XH / CAP
|
||||
local xb : mix SB RIGHTSB 0.51
|
||||
local yb : mix [CAP - XH] CAP [0.05 * turnp]
|
||||
|
||||
include : xStrand xbottom 0 RIGHTSB CAP 0.1 0.6 0.14
|
||||
include : halfXStrand SB CAP xb yb [0.1 * turnp] 0.4 [0.14 * turnp]
|
||||
}
|
||||
create-glyph 'be' : glyph-construction {
|
||||
assign-unicode 0x431
|
||||
include bMarks
|
||||
include glyphs.o
|
||||
include : create-stroke
|
||||
:.start-from [SB + O] SMALLSMOOTHB
|
||||
:.set-width 0 STROKE
|
||||
:.line-to [SB + O] [XH - SMALLSMOOTHA]
|
||||
:.cubic-to [SB + O] [mix XH CAP 1.2] [mix SB RIGHTSB 0.4] [mix XH CAP 0.5] [RIGHTSB - HALFSTROKE * ITALICCOR] CAP
|
||||
}
|
||||
create-glyph 've' : glyph-construction {
|
||||
assign-unicode 0x432
|
||||
include eMarks
|
||||
include : BShape XH
|
||||
}
|
||||
create-glyph 'ghe' : glyph-construction {
|
||||
assign-unicode 0x433
|
||||
include eMarks
|
||||
include : LShape XH
|
||||
include : FlipAround MIDDLE [XH / 2] 1 [-1]
|
||||
}
|
||||
define [DeShape top] : glyph-construction {
|
||||
local cutleft : mix SB RIGHTSB 0.2
|
||||
local cutright : mix SB RIGHTSB 0.92
|
||||
include : HBar [SB + O * 2] RIGHTSB HALFSTROKE
|
||||
include : VBar [cutright - HALFSTROKE * ITALICCOR] 0 top
|
||||
include : HBar cutleft cutright [top - HALFSTROKE]
|
||||
include : halfXStrand [cutleft + STROKE * ITALICCOR] top [SB + HALFSTROKE * ITALICCOR] HALFSTROKE 0.1 0.75 0.5
|
||||
include : VBar [SB + HALFSTROKE * ITALICCOR + O * 2] [-LONGJUT + HALFSTROKE] 0
|
||||
include : VBar [RIGHTSB - HALFSTROKE * ITALICCOR] [-LONGJUT + HALFSTROKE] 0
|
||||
}
|
||||
create-glyph 'De' : glyph-construction {
|
||||
assign-unicode 0x414
|
||||
include ifMarks
|
||||
include : DeShape CAP
|
||||
}
|
||||
create-glyph 'de' : glyph-construction {
|
||||
assign-unicode 0x434
|
||||
include pMarks
|
||||
include : DeShape XH
|
||||
}
|
||||
define [ZheShape top] : glyph-construction {
|
||||
local fine : adviceBlackness 3.75
|
||||
local midx : mix SB MIDDLE 0.3
|
||||
define [AngleShape] : glyph-construction {
|
||||
local cor 1
|
||||
start-from [SB + O] 0
|
||||
line-to [SB + fine * cor + O] 0
|
||||
line-to [midx + fine * cor] [top / 2]
|
||||
line-to [SB + fine * cor + O] top
|
||||
line-to [SB + O] top
|
||||
line-to midx [top / 2]
|
||||
reverse-last
|
||||
}
|
||||
include : AngleShape
|
||||
include : FlipAround MIDDLE [top / 2]
|
||||
include : AngleShape
|
||||
include : VBar MIDDLE 0 top fine
|
||||
include : HBar midx [WIDTH - midx] [top / 2] fine
|
||||
}
|
||||
create-glyph 'Zhe' : glyph-construction {
|
||||
assign-unicode 0x416
|
||||
include capitalMarks
|
||||
include : ZheShape CAP
|
||||
}
|
||||
create-glyph 'zhe' : glyph-construction {
|
||||
assign-unicode 0x436
|
||||
include eMarks
|
||||
include : ZheShape XH
|
||||
}
|
||||
define [ZeShape top] : glyph-construction {
|
||||
local mid : mix RIGHTSB SB 0.65
|
||||
include : twoHookUpper top [SMOOTHB * 0.87 / [XH / top]] SHOOK
|
||||
include : sHookLower 0 [SMOOTHA * 0.87 / [XH / top]] SHOOK
|
||||
include : create-stroke
|
||||
:.start-from RIGHTSB [top - SMOOTHB * 0.87 / [XH / top]]
|
||||
:.set-width 0 STROKE
|
||||
:.arc-vh-to MIDDLE [top / 2 - HALFSTROKE] KAPPA
|
||||
:.line-to mid [top / 2 - HALFSTROKE]
|
||||
:.heads-to LEFTWARD
|
||||
include : create-stroke
|
||||
:.start-from RIGHTSB [SMOOTHA * 0.87 / [XH / top]]
|
||||
:.set-width STROKE 0
|
||||
:.arc-vh-to MIDDLE [top / 2 + HALFSTROKE] KAPPA
|
||||
:.line-to mid [top / 2 + HALFSTROKE]
|
||||
:.heads-to LEFTWARD
|
||||
}
|
||||
create-glyph 'Ze' : glyph-construction {
|
||||
assign-unicode 0x417
|
||||
include capitalMarks
|
||||
include : ZeShape CAP
|
||||
}
|
||||
create-glyph 'ze' : glyph-construction {
|
||||
assign-unicode 0x437
|
||||
include eMarks
|
||||
include : ZeShape XH
|
||||
}
|
||||
|
||||
define [ElShape top] : glyph-construction {
|
||||
local cutleft : mix SB RIGHTSB 0.16
|
||||
local cutright : mix SB RIGHTSB 0.95
|
||||
include : VBar [cutright - HALFSTROKE * ITALICCOR] 0 top
|
||||
include : HBar [cutleft + O * 2] RIGHTSB [top - HALFSTROKE]
|
||||
include : HBar [SB + O * 2] [SB + STROKE] HALFSTROKE
|
||||
include : halfXStrand [cutleft + STROKE * ITALICCOR] top [SB + HALFSTROKE] HALFSTROKE 0.1 0.75 0.5
|
||||
}
|
||||
create-glyph 'El' : glyph-construction {
|
||||
assign-unicode 0x41B
|
||||
include capitalMarks
|
||||
include : ElShape CAP
|
||||
}
|
||||
create-glyph 'el' : glyph-construction {
|
||||
assign-unicode 0x43B
|
||||
include eMarks
|
||||
include : ElShape XH
|
||||
}
|
||||
create-glyph 'em' : glyph-construction {
|
||||
assign-unicode 0x43C
|
||||
include eMarks
|
||||
include : MShape XH
|
||||
}
|
||||
create-glyph 'en' : glyph-construction {
|
||||
assign-unicode 0x43D
|
||||
include eMarks
|
||||
include : HShape XH
|
||||
}
|
||||
|
||||
define [TseShape top] : glyph-construction {
|
||||
include : VBarLeft SB 0 top
|
||||
include : HBarBottom SB RIGHTSB 0
|
||||
include : VBarRight RIGHTSB 0 top
|
||||
include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE
|
||||
}
|
||||
create-glyph 'Tse' : glyph-construction {
|
||||
assign-unicode 0x426
|
||||
include capitalMarks
|
||||
include : TseShape CAP
|
||||
}
|
||||
create-glyph 'tse' : glyph-construction {
|
||||
assign-unicode 0x446
|
||||
include eMarks
|
||||
include : TseShape XH
|
||||
}
|
||||
define [CheShape top] : glyph-construction {
|
||||
include : VBarRight RIGHTSB 0 top
|
||||
include : create-stroke
|
||||
:.start-from SB top
|
||||
:.set-width STROKE 0
|
||||
:.heads-to DOWNWARD
|
||||
:.line-to SB [top * 0.3 + SMOOTHB - HALFSTROKE]
|
||||
:.arc-vh-to MIDDLE [top * 0.3 - HALFSTROKE]
|
||||
:.heads-to RIGHTWARD
|
||||
:.line-to RIGHTSB [top * 0.3 - HALFSTROKE]
|
||||
:.heads-to RIGHTWARD
|
||||
}
|
||||
create-glyph 'Che' : glyph-construction {
|
||||
assign-unicode 0x427
|
||||
include capitalMarks
|
||||
include : CheShape CAP
|
||||
}
|
||||
create-glyph 'che' : glyph-construction {
|
||||
assign-unicode 0x447
|
||||
include eMarks
|
||||
include : CheShape XH
|
||||
}
|
||||
define [ShaShape top] : glyph-construction {
|
||||
local fine : adviceBlackness 3.5
|
||||
include : HBarBottom SB RIGHTSB 0
|
||||
include : VBarLeft SB 0 top fine
|
||||
include : VBarRight RIGHTSB 0 top fine
|
||||
include : VBar MIDDLE 0 top fine
|
||||
}
|
||||
create-glyph 'Sha' : glyph-construction {
|
||||
assign-unicode 0x428
|
||||
include capitalMarks
|
||||
include : ShaShape CAP
|
||||
}
|
||||
create-glyph 'sha' : glyph-construction {
|
||||
assign-unicode 0x448
|
||||
include eMarks
|
||||
include : ShaShape XH
|
||||
}
|
||||
define [ShchaShape top] : glyph-construction {
|
||||
include : ShaShape top
|
||||
include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE
|
||||
}
|
||||
create-glyph 'Shcha' : glyph-construction {
|
||||
assign-unicode 0x429
|
||||
include capitalMarks
|
||||
include : ShchaShape CAP
|
||||
}
|
||||
create-glyph 'shcha' : glyph-construction {
|
||||
assign-unicode 0x449
|
||||
include eMarks
|
||||
include : ShchaShape XH
|
||||
}
|
||||
define [YerShape top] : glyph-construction {
|
||||
include : YeriShape top [mix SB RIGHTSB 0.2] RIGHTSB
|
||||
include : HBarTop SB [STROKE * 0.1 + [mix SB RIGHTSB 0.2]] top
|
||||
}
|
||||
create-glyph 'Yer' : glyph-construction {
|
||||
assign-unicode 0x42A
|
||||
include capitalMarks
|
||||
include : YerShape CAP
|
||||
}
|
||||
create-glyph 'yer' : glyph-construction {
|
||||
assign-unicode 0x44A
|
||||
include eMarks
|
||||
include : YerShape XH
|
||||
}
|
||||
define [YeryShape top] : glyph-construction {
|
||||
local fine : adviceBlackness 3.5
|
||||
include : YeriShape top SB [mix [RIGHTSB - fine * ITALICCOR] [MIDDLE + fine / 2 * ITALICCOR] 0.5] fine
|
||||
include : VBarRight RIGHTSB 0 top fine
|
||||
}
|
||||
create-glyph 'Yery' : glyph-construction {
|
||||
assign-unicode 0x42B
|
||||
include capitalMarks
|
||||
include : YeryShape CAP
|
||||
}
|
||||
create-glyph 'yery' : glyph-construction {
|
||||
assign-unicode 0x44B
|
||||
include eMarks
|
||||
include : YeryShape XH
|
||||
}
|
||||
create-glyph 'cyrE' : glyph-construction {
|
||||
assign-unicode 0x42D
|
||||
include eMarks
|
||||
include glyphs.C
|
||||
include : FlipAround MIDDLE [CAP / 2]
|
||||
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB [CAP / 2]
|
||||
}
|
||||
create-glyph 'cyre' : glyph-construction {
|
||||
assign-unicode 0x44D
|
||||
include eMarks
|
||||
include glyphs.c
|
||||
include : FlipAround MIDDLE [XH / 2]
|
||||
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB [XH / 2]
|
||||
}
|
||||
define [YuShape top sma smb] : glyph-construction {
|
||||
local fine : adviceBlackness 3.5
|
||||
include : VBarLeft SB 0 top fine
|
||||
include : smallo top 0 [mix [SB + fine * ITALICCOR] RIGHTSB 0.2] RIGHTSB fine [sma * 0.8] [smb * 0.8]
|
||||
include : HBar [SB + fine * 0.1] [mix [SB + fine * ITALICCOR] RIGHTSB 0.2] [top / 2]
|
||||
}
|
||||
create-glyph 'Yu' : glyph-construction {
|
||||
assign-unicode 0x42E
|
||||
include capitalMarks
|
||||
include : YuShape CAP SMOOTHA SMOOTHB
|
||||
}
|
||||
create-glyph 'yu' : glyph-construction {
|
||||
assign-unicode 0x44E
|
||||
include eMarks
|
||||
include : YuShape XH SMALLSMOOTHA SMALLSMOOTHB
|
||||
}
|
||||
define [YaShape top] : glyph-construction {
|
||||
local bowlTop [top * 1]
|
||||
local bowlBottom [[top - STROKE] / 2 - HALFSTROKE]
|
||||
|
||||
local turn : mix bowlTop bowlBottom 0.5
|
||||
local turnRadius : [bowlTop - bowlBottom] / 2
|
||||
|
||||
include : create-stroke
|
||||
:.start-from [WIDTH - SB * 1.25 - HALFSTROKE * 0.1] bowlTop
|
||||
:.heads-to LEFTWARD
|
||||
:.set-width STROKE 0
|
||||
:.line-to [SB + turnRadius] bowlTop
|
||||
:.arc-hv-to [SB + O] turn
|
||||
:.arc-vh-to [SB + turnRadius] bowlBottom
|
||||
:.line-to [WIDTH - SB * 1.25 - HALFSTROKE * 0.1] bowlBottom
|
||||
:.heads-to RIGHTWARD
|
||||
|
||||
include : VBarRight RIGHTSB 0 top
|
||||
|
||||
local turn [XH * 0.1]
|
||||
local left [SB + O]
|
||||
include : create-stroke
|
||||
:.start-from [left + HALFSTROKE] 0
|
||||
:.heads-to UPWARD
|
||||
:.set-width HALFSTROKE HALFSTROKE
|
||||
:.curve-to [left + HALFSTROKE] [turn + 0.2 * [XH - turn]] MIDDLE [bowlBottom + HALFSTROKE]
|
||||
}
|
||||
create-glyph 'Ya' : glyph-construction {
|
||||
assign-unicode 0x42F
|
||||
include capitalMarks
|
||||
include : YaShape CAP
|
||||
}
|
||||
create-glyph 'ya' : glyph-construction {
|
||||
assign-unicode 0x44F
|
||||
include eMarks
|
||||
include : YaShape XH
|
||||
}
|
|
@ -155,9 +155,9 @@ create-glyph 'alpha' : glyph-construction {
|
|||
include eMarks
|
||||
|
||||
local middle : mix SB RIGHTSB 0.425
|
||||
local cx : mix SB RIGHTSB 0.65
|
||||
local cx : mix SB RIGHTSB 0.7
|
||||
local cy : mix 0 XH 0.3
|
||||
local cx2 : mix SB RIGHTSB 0.575
|
||||
local cx2 : mix SB RIGHTSB 0.625
|
||||
local fine : adviceBlackness 3.5
|
||||
include : create-stroke
|
||||
:.start-from [RIGHTSB - fine * ITALICCOR - O] XH
|
||||
|
@ -199,7 +199,7 @@ create-glyph 'eta' : glyph-construction {
|
|||
create-glyph 'kappa' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 0x3BA
|
||||
include bMarks
|
||||
include eMarks
|
||||
include : create-stroke
|
||||
:.start-from SB 0
|
||||
:.set-width 0 STROKE
|
||||
|
@ -238,7 +238,7 @@ create-glyph 'mu' : glyph-construction {
|
|||
create-glyph 'theta' : glyph-construction {
|
||||
assign-unicode 0x3B8
|
||||
include bMarks
|
||||
include : smallo CAP 0 [SB - O] [RIGHTSB + O]
|
||||
include : smallo CAP 0 [SB - O] [RIGHTSB + O] STROKE [SMALLSMOOTHA * 100] [SMALLSMOOTHB * 100]
|
||||
include : HBar [SB + HALFSTROKE] [RIGHTSB - HALFSTROKE] CAPMIDDLE
|
||||
}
|
||||
create-glyph 'beta' : glyph-construction {
|
||||
|
@ -293,7 +293,7 @@ create-glyph 'delta' : glyph-construction {
|
|||
assign-unicode 0x3B4
|
||||
include bMarks
|
||||
|
||||
local xNeck : mix SB RIGHTSB 0.05
|
||||
local xNeck : mix SB RIGHTSB 0.125
|
||||
local bar : mix 0 XH 0.96
|
||||
local xOTLeft : mix SB RIGHTSB 0.5
|
||||
local fine : STROKE * 0.5
|
||||
|
@ -355,7 +355,7 @@ create-glyph 'xi' : glyph-construction {
|
|||
include ifMarks
|
||||
include : HBar SB [RIGHTSB + O] [CAP - HALFSTROKE]
|
||||
|
||||
local xbar : mix SB RIGHTSB 0.925
|
||||
local xbar : mix SB RIGHTSB 0.85
|
||||
local ybar : mix 0 CAP 0.55
|
||||
include : create-stroke
|
||||
:.start-from xbar [CAP - STROKE]
|
||||
|
@ -497,7 +497,7 @@ create-glyph 'omega' : glyph-construction {
|
|||
}
|
||||
|
||||
create-glyph 'phi' : glyph-construction {
|
||||
assign-unicode 0x3C6
|
||||
assign-unicode 0x3D5
|
||||
include ifMarks
|
||||
local fine : adviceBlackness 3.5
|
||||
local y1 0
|
||||
|
@ -507,6 +507,27 @@ create-glyph 'phi' : glyph-construction {
|
|||
include : VBar MIDDLE y1 y2 fine
|
||||
include : VBar MIDDLE [y2 - HALFSTROKE] CAP
|
||||
}
|
||||
create-glyph 'varphi' : glyph-construction {
|
||||
assign-unicode 0x3C6
|
||||
include pMarks
|
||||
local fine : adviceBlackness 3.5
|
||||
local x0 : [mix SB RIGHTSB 0.1] + fine
|
||||
local y0 : XH - STROKE * 0.2
|
||||
local y1 : mix 0 XH 0.75
|
||||
local x1 : SB + fine * ITALICCOR + O
|
||||
local y3 : XH / 2
|
||||
local y4 : XH * 0.65
|
||||
|
||||
include : create-stroke
|
||||
:.start-from x0 y0
|
||||
:.set-width 0 fine
|
||||
:.curve-to x1 y1 x1 [XH / 2]
|
||||
:.arc-vh-to MIDDLE [fine + O]
|
||||
:.arc-hv-to [WIDTH - x1] [XH / 2]
|
||||
:.arc-vh-to [mix [WIDTH - x1] [MIDDLE + fine / 2] 0.5] [XH - fine - O]
|
||||
:.arc-hv-to [MIDDLE + fine / 2] y3
|
||||
:.line-to [MIDDLE + fine / 2] DESCENDER
|
||||
}
|
||||
|
||||
create-glyph 'psi' : glyph-construction {
|
||||
assign-unicode 0x3C8
|
||||
|
@ -534,6 +555,14 @@ create-glyph 'chi' : glyph-construction {
|
|||
include : xStrand SB XH RIGHTSB DESCENDER 0.05 0.4 0.1
|
||||
}
|
||||
|
||||
# Variant letters
|
||||
|
||||
create-glyph 'pomega' : glyph-construction {
|
||||
assign-unicode 0x3D6
|
||||
include glyphs.omega AS_BASE
|
||||
include : HBar SB RIGHTSB [XH - HALFSTROKE]
|
||||
}
|
||||
|
||||
### Polytonic symbols
|
||||
define [GreekLRDoubleMark id unicode leftGlyph rightGlyph] : create-glyph id : glyph-construction {
|
||||
assign-unicode unicode
|
||||
|
|
|
@ -186,23 +186,19 @@ create-glyph 'K' : glyph-construction {
|
|||
}
|
||||
|
||||
### B D P R
|
||||
create-glyph 'B' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'B'
|
||||
include capitalMarks
|
||||
|
||||
local bowl 451
|
||||
define [BShape top] : glyph-construction {
|
||||
local bowl : top * 0.585
|
||||
local tkappa [COKAPPA - 0.22]
|
||||
local bkappa [COKAPPA - 0.2]
|
||||
|
||||
local turntop : [CAP + [bowl - STROKE]] / 2
|
||||
local turntop : [top + [bowl - STROKE]] / 2
|
||||
local turnbottom : bowl / 2
|
||||
|
||||
include : create-stroke
|
||||
:.start-from SB CAP
|
||||
:.start-from SB top
|
||||
:.heads-to RIGHTWARD
|
||||
:.set-width 0 STROKE
|
||||
:.line-to [RIGHTSB - SB * 0.5 - turnbottom] CAP
|
||||
:.line-to [RIGHTSB - SB * 0.5 - turnbottom] top
|
||||
:.arc-hv-to [RIGHTSB - SB * 0.5] turntop
|
||||
:.arc-vh-to [RIGHTSB - SB * 0.5 - turnbottom] [bowl - STROKE]
|
||||
:.line-to SB [bowl - STROKE]
|
||||
|
@ -222,9 +218,15 @@ create-glyph 'B' : glyph-construction {
|
|||
:.start-from SB 0
|
||||
:.heads-to UPWARD
|
||||
:.set-width 0 STROKE
|
||||
:.line-to SB CAP
|
||||
:.line-to SB top
|
||||
:.heads-to UPWARD
|
||||
}
|
||||
create-glyph 'B' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'B'
|
||||
include capitalMarks
|
||||
include : BShape CAP
|
||||
}
|
||||
|
||||
create-glyph 'D' : glyph-construction {
|
||||
set-width WIDTH
|
||||
|
@ -414,26 +416,23 @@ create-glyph 'E' : glyph-construction {
|
|||
include : create-stroke :.start-from [SB * 1.5] 0 :.set-width STROKE 0 :.heads-to RIGHTWARD
|
||||
:.line-to RIGHTSB 0 :.heads-to RIGHTWARD
|
||||
}
|
||||
define [HShape top] : glyph-construction {
|
||||
include : create-stroke :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE
|
||||
:.line-to SB top :.heads-to UPWARD
|
||||
include : create-stroke :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0
|
||||
:.line-to RIGHTSB top :.heads-to UPWARD
|
||||
include : create-stroke :.start-from SB [top / 2] :.set-width HALFSTROKE HALFSTROKE :.heads-to RIGHTWARD
|
||||
:.line-to RIGHTSB [top / 2] :.heads-to RIGHTWARD
|
||||
}
|
||||
create-glyph 'H' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'H'
|
||||
include capitalMarks
|
||||
|
||||
include : create-stroke :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE
|
||||
:.line-to SB CAP :.heads-to UPWARD
|
||||
include : create-stroke :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0
|
||||
:.line-to RIGHTSB CAP :.heads-to UPWARD
|
||||
include : create-stroke :.start-from SB [CAP / 2] :.set-width HALFSTROKE HALFSTROKE :.heads-to RIGHTWARD
|
||||
:.line-to RIGHTSB [CAP / 2] :.heads-to RIGHTWARD
|
||||
include : HShape CAP
|
||||
}
|
||||
|
||||
create-glyph 'L' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'L'
|
||||
include capitalMarks
|
||||
|
||||
define [LShape top] : glyph-construction {
|
||||
include : create-stroke
|
||||
:.start-from [SB * 1.5] CAP
|
||||
:.start-from [SB * 1.5] top
|
||||
:.set-width STROKE 0
|
||||
:.heads-to DOWNWARD
|
||||
:.line-to [SB * 1.5] 0
|
||||
|
@ -445,6 +444,12 @@ create-glyph 'L' : glyph-construction {
|
|||
:.line-to RIGHTSB 0
|
||||
:.heads-to RIGHTWARD
|
||||
}
|
||||
create-glyph 'L' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'L'
|
||||
include capitalMarks
|
||||
include : LShape CAP
|
||||
}
|
||||
|
||||
create-glyph 'I.straight' : glyph-construction {
|
||||
dont-export
|
||||
|
@ -571,28 +576,30 @@ create-glyph 'N' : glyph-construction {
|
|||
:.start-from [SB + halftopstroke] CAP :.heads-to DOWNWARD :.set-width topstroke 0
|
||||
:.line-to [RIGHTSB - topstroke - halftopstroke] 0 :.heads-to DOWNWARD
|
||||
}
|
||||
create-glyph 'M' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'M'
|
||||
include capitalMarks
|
||||
|
||||
define [MShape top] : glyph-construction {
|
||||
local topstroke : adviceBlackness 5
|
||||
local halftopstroke : topstroke / 2
|
||||
|
||||
include : create-stroke
|
||||
:.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE
|
||||
:.line-to SB [CAP * 0.2] :.heads-to UPWARD
|
||||
:.line-to SB CAP :.heads-to UPWARD :.set-width 0 topstroke
|
||||
:.line-to SB [top * 0.2] :.heads-to UPWARD
|
||||
:.line-to SB top :.heads-to UPWARD :.set-width 0 topstroke
|
||||
include : create-stroke
|
||||
:.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0
|
||||
:.line-to RIGHTSB [CAP * 0.2] :.heads-to UPWARD
|
||||
:.line-to RIGHTSB CAP :.heads-to UPWARD :.set-width topstroke 0
|
||||
:.line-to RIGHTSB [top * 0.2] :.heads-to UPWARD
|
||||
:.line-to RIGHTSB top :.heads-to UPWARD :.set-width topstroke 0
|
||||
include : create-stroke
|
||||
:.start-from [SB + halftopstroke] CAP :.heads-to DOWNWARD :.set-width topstroke 0
|
||||
:.line-to [MIDDLE - halftopstroke] [CAP * 0.3] :.heads-to DOWNWARD
|
||||
:.start-from [SB + halftopstroke] top :.heads-to DOWNWARD :.set-width topstroke 0
|
||||
:.line-to [MIDDLE - halftopstroke] [top * 0.3] :.heads-to DOWNWARD
|
||||
include : create-stroke
|
||||
:.start-from [MIDDLE + halftopstroke] [CAP * 0.3] :.heads-to UPWARD :.set-width topstroke 0
|
||||
:.line-to [RIGHTSB - halftopstroke] CAP :.heads-to UPWARD
|
||||
:.start-from [MIDDLE + halftopstroke] [top * 0.3] :.heads-to UPWARD :.set-width topstroke 0
|
||||
:.line-to [RIGHTSB - halftopstroke] top :.heads-to UPWARD
|
||||
}
|
||||
create-glyph 'M' : glyph-construction {
|
||||
set-width WIDTH
|
||||
assign-unicode 'M'
|
||||
include capitalMarks
|
||||
include : MShape CAP
|
||||
}
|
||||
|
||||
### S
|
||||
|
|
2
makefile
2
makefile
|
@ -1,5 +1,5 @@
|
|||
SUPPORT_FILES = support/glyph.js support/stroke.js parameters.js
|
||||
GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/latin-extend.patel glyphs/numbers.patel glyphs/symbol-ascii.patel glyphs/symbol-extend.patel glyphs/autobuilds.patel
|
||||
GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/cyrillic-basic.patel glyphs/latin-extend.patel glyphs/numbers.patel glyphs/symbol-ascii.patel glyphs/symbol-extend.patel glyphs/autobuilds.patel
|
||||
OBJDIR = build
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
|
|
|
@ -39,7 +39,7 @@ define regular (
|
|||
.family 'Iosevka'
|
||||
.style 'Regular'
|
||||
.weight 400
|
||||
.version 'r0.0.5'
|
||||
.version 'r0.0.6'
|
||||
.variantSelector (.)
|
||||
.copyright 'Copyright (c) 2015 Belleve Invis.'
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user