This commit is contained in:
be5invis 2015-12-24 16:01:44 +08:00
parent bc8c09465e
commit f53d1586f4
4 changed files with 70 additions and 55 deletions

View File

@ -375,11 +375,14 @@ export as build : define [buildFont para recursive recursiveCodes] : begin
set font.hhea.ascent asc
set font.'OS/2'.usWinAscent asc
set font.'OS/2'.sTypoAscender asc
set font.hhea.descent desc
set font.hhea.descent DESCENDER
set font.'OS/2'.usWinDescent [Math.abs desc]
set font.'OS/2'.sTypoDescender desc
set font.hhea.lineGap para.linegap
set font.'OS/2'.sTypoLineGap para.linegap
set font.'OS/2'.sTypoDescender DESCENDER
set font.hhea.lineGap (para.leading - asc + DESCENDER)
set font.'OS/2'.sTypoLineGap (para.leading - asc + DESCENDER)
set font.'OS/2'.sxHeight XH
set font.'OS/2'.sCapHeight CAP
set font.post.italicAngle (0 - para.slantAngle)

View File

@ -223,13 +223,13 @@ symbol-block 'Block Shapes'
create-glyph 'fullblock' : glyph-construction
set-width FULLWIDTH
assign-unicode 0x2588
start-from 0 font.hhea.ascent
line-to FULLWIDTH font.hhea.ascent
line-to FULLWIDTH font.hhea.descent
line-to 0 font.hhea.descent
start-from 0 font.'OS/2'.usWinAscent
line-to FULLWIDTH font.'OS/2'.usWinAscent
line-to FULLWIDTH (-font.'OS/2'.usWinDescent)
line-to 0 (-font.'OS/2'.usWinDescent)
define [Shade fn] : glyph-construction
local top font.hhea.ascent
local bottom font.hhea.descent
local top font.'OS/2'.usWinAscent
local bottom (-font.'OS/2'.usWinDescent)
local segx 6
local segy 16
local g : create-glyph : glyph-construction : foreach j [range 0 segx] : foreach k [range 0 segy] : if [fn j k] : begin
@ -257,31 +257,31 @@ symbol-block 'Block Shapes'
create-glyph ('vfill' + fill) : glyph-construction
set-width FULLWIDTH
assign-unicode (0x2580 + fill)
start-from 0 [mix font.hhea.descent font.hhea.ascent (fill / 8)]
line-to FULLWIDTH [mix font.hhea.descent font.hhea.ascent (fill / 8)]
line-to FULLWIDTH font.hhea.descent
line-to 0 font.hhea.descent
start-from 0 [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent (fill / 8)]
line-to FULLWIDTH [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent (fill / 8)]
line-to FULLWIDTH (-font.'OS/2'.usWinDescent)
line-to 0 (-font.'OS/2'.usWinDescent)
create-glyph ('hfill' + fill) : glyph-construction
set-width FULLWIDTH
assign-unicode (0x2590 - fill)
start-from 0 font.hhea.ascent
line-to (FULLWIDTH * fill / 8) font.hhea.ascent
line-to (FULLWIDTH * fill / 8) font.hhea.descent
line-to 0 font.hhea.descent
start-from 0 font.'OS/2'.usWinAscent
line-to (FULLWIDTH * fill / 8) font.'OS/2'.usWinAscent
line-to (FULLWIDTH * fill / 8) (-font.'OS/2'.usWinDescent)
line-to 0 (-font.'OS/2'.usWinDescent)
create-glyph 'upHalfblock' : glyph-construction
set-width FULLWIDTH
assign-unicode 0x2580
start-from 0 font.hhea.ascent
line-to FULLWIDTH font.hhea.ascent
line-to FULLWIDTH [mix font.hhea.descent font.hhea.ascent 0.5]
line-to 0 [mix font.hhea.descent font.hhea.ascent 0.5]
start-from 0 font.'OS/2'.usWinAscent
line-to FULLWIDTH font.'OS/2'.usWinAscent
line-to FULLWIDTH [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent 0.5]
line-to 0 [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent 0.5]
create-glyph 'rightHalfBlock' : glyph-construction
set-width FULLWIDTH
assign-unicode 0x2590
start-from (FULLWIDTH * 0.5) font.hhea.ascent
line-to FULLWIDTH font.hhea.ascent
line-to FULLWIDTH font.hhea.descent
line-to (FULLWIDTH * 0.5) font.hhea.descent
start-from (FULLWIDTH * 0.5) font.'OS/2'.usWinAscent
line-to FULLWIDTH font.'OS/2'.usWinAscent
line-to FULLWIDTH (-font.'OS/2'.usWinDescent)
line-to (FULLWIDTH * 0.5) (-font.'OS/2'.usWinDescent)
### Box drawing glyphs
symbol-block 'Box-Drawing'
@ -289,7 +289,7 @@ symbol-block 'Box-Drawing'
local heavy : Math.max (light * 2) (WIDTH * 0.15)
local width FULLWIDTH
local midx : FULLWIDTH / 2
local midy : mix font.hhea.descent font.hhea.ascent 0.5
local midy : mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent 0.5
define [boxdraw unicode u d l r] : create-glyph ('bd' + [unicode.toString 16 :.toUpperCase]) : glyph-construction
assign-unicode unicode
set-width width
@ -297,8 +297,8 @@ symbol-block 'Box-Drawing'
local stopV : [Math.max l r] / 2
if l : include : HBar 0 (midx + stopH) midy l
if r : include : HBar (midx - stopH) width midy r
if d : include : VBar midx font.hhea.descent (midy + stopV) d
if u : include : VBar midx (midy - stopV) font.hhea.ascent u
if d : include : VBar midx (-font.'OS/2'.usWinDescent) (midy + stopV) d
if u : include : VBar midx (midy - stopV) font.'OS/2'.usWinAscent u
define [dlboxdraw unicode u d l r] : create-glyph ('bd' + [unicode.toString 16 :.toUpperCase]) : glyph-construction
assign-unicode unicode
set-width width
@ -313,11 +313,11 @@ symbol-block 'Box-Drawing'
include : HBar (midx + stopH) width (midy + (r - light)) light
if (r > light) : include : HBar (midx + stopH) width (midy - (r - light)) light
if d : begin
include : VBar (midx + (d - light)) font.hhea.descent (midy - stopV) light
if (d > light) : include : VBar (midx - (d - light)) font.hhea.descent (midy - stopV) light
include : VBar (midx + (d - light)) (-font.'OS/2'.usWinDescent) (midy - stopV) light
if (d > light) : include : VBar (midx - (d - light)) (-font.'OS/2'.usWinDescent) (midy - stopV) light
if u : begin
include : VBar (midx + (u - light)) (midy + stopV) font.hhea.ascent light
if (u > light) : include : VBar (midx - (u - light)) (midy + stopV) font.hhea.ascent light
include : VBar (midx + (u - light)) (midy + stopV) font.'OS/2'.usWinAscent light
if (u > light) : include : VBar (midx - (u - light)) (midy + stopV) font.'OS/2'.usWinAscent light
if (stopH > 0 && [not u]) : include : HBar (midx - stopH - light * HVCONTRAST) (midx + stopH + light * HVCONTRAST) (midy + capV) light
if (stopH > 0 && [not d]) : include : HBar (midx - stopH - light * HVCONTRAST) (midx + stopH + light * HVCONTRAST) (midy - capV) light
if (stopV > 0 && [not l]) : include : VBar (midx - capH) (midy - stopV - light) (midy + stopV + light) light
@ -404,7 +404,7 @@ symbol-block 'Box-Drawing'
define [vDashed unicode segments weight] : create-glyph ('bd' + [unicode.toString 16 :.toUpperCase]) : glyph-construction
assign-unicode unicode
set-width width
foreach j [range 0 segments] : include : VBar midx [mix [mix font.hhea.descent font.hhea.ascent (j / segments)] [mix font.hhea.descent font.hhea.ascent ((j + 1) / segments)] 0.2] [mix [mix font.hhea.descent font.hhea.ascent (j / segments)] [mix font.hhea.descent font.hhea.ascent ((j + 1) / segments)] 0.8] weight
foreach j [range 0 segments] : include : VBar midx [mix [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent (j / segments)] [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent ((j + 1) / segments)] 0.2] [mix [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent (j / segments)] [mix (-font.'OS/2'.usWinDescent) font.'OS/2'.usWinAscent ((j + 1) / segments)] 0.8] weight
hDashed 0x2504 3 light
hDashed 0x2505 3 heavy
hDashed 0x2508 4 light
@ -424,7 +424,7 @@ symbol-block 'Box-Drawing'
set-width width
include : dispiro
widths.center light
g4.up.start midx font.hhea.descent [heading UPWARD]
g4.up.start midx (-font.'OS/2'.usWinDescent) [heading UPWARD]
arcvh
g4.right.end width midy [heading RIGHTWARD]
create-glyph 'bd256E' : glyph-construction
@ -432,7 +432,7 @@ symbol-block 'Box-Drawing'
set-width width
include : dispiro
widths.center light
g4.up.start midx font.hhea.descent [heading UPWARD]
g4.up.start midx (-font.'OS/2'.usWinDescent) [heading UPWARD]
arcvh
g4.left.end 0 midy [heading LEFTWARD]
create-glyph 'bd256F' : glyph-construction
@ -440,7 +440,7 @@ symbol-block 'Box-Drawing'
set-width width
include : dispiro
widths.center light
g4.down.start midx font.hhea.ascent [heading DOWNWARD]
g4.down.start midx font.'OS/2'.usWinAscent [heading DOWNWARD]
arcvh
g4.left.end 0 midy [heading LEFTWARD]
create-glyph 'bd2570' : glyph-construction
@ -448,7 +448,7 @@ symbol-block 'Box-Drawing'
set-width width
include : dispiro
widths.center light
g4.down.start midx font.hhea.ascent [heading DOWNWARD]
g4.down.start midx font.'OS/2'.usWinAscent [heading DOWNWARD]
arcvh
g4.right.end width midy [heading RIGHTWARD]
create-glyph 'bd2571' : glyph-construction
@ -456,15 +456,15 @@ symbol-block 'Box-Drawing'
set-width width
include : dispiro
widths.center light
flat width font.hhea.ascent
curl 0 font.hhea.descent
flat width font.'OS/2'.usWinAscent
curl 0 (-font.'OS/2'.usWinDescent)
create-glyph 'bd2572' : glyph-construction
assign-unicode 0x2572
set-width width
include : dispiro
widths.center light
flat 0 font.hhea.ascent
curl width font.hhea.descent
flat 0 font.'OS/2'.usWinAscent
curl width (-font.'OS/2'.usWinDescent)
create-glyph 'bd2573' : glyph-construction
assign-unicode 0x2573
set-width width
@ -489,33 +489,33 @@ symbol-block 'Powerline'
create-glyph 'pwlTriangleRight' : glyph-construction
assign-unicode 0xE0B0
start-from O font.hhea.ascent
line-to 0 font.hhea.ascent
line-to WIDTH [mix font.hhea.ascent font.hhea.descent 0.5]
line-to 0 font.hhea.descent
line-to O font.hhea.descent
start-from O font.'OS/2'.usWinAscent
line-to 0 font.'OS/2'.usWinAscent
line-to WIDTH [mix font.'OS/2'.usWinAscent (-font.'OS/2'.usWinDescent) 0.5]
line-to 0 (-font.'OS/2'.usWinDescent)
line-to O (-font.'OS/2'.usWinDescent)
create-glyph 'pwlAngleRight' : glyph-construction
assign-unicode 0xE0B1
local fine : adviceBlackness 4
include : dispiro
widths.rhs fine
flat 0 font.hhea.ascent
curl WIDTH [mix font.hhea.ascent font.hhea.descent 0.5]
flat 0 font.'OS/2'.usWinAscent
curl WIDTH [mix font.'OS/2'.usWinAscent (-font.'OS/2'.usWinDescent) 0.5]
include : dispiro
widths.rhs fine
flat WIDTH [mix font.hhea.ascent font.hhea.descent 0.5]
curl 0 font.hhea.descent
flat WIDTH [mix font.'OS/2'.usWinAscent (-font.'OS/2'.usWinDescent) 0.5]
curl 0 (-font.'OS/2'.usWinDescent)
create-glyph 'pwlTriangleLeft' : glyph-construction
assign-unicode 0xE0B2
include glyphs.pwlTriangleRight
include : FlipAround MIDDLE [mix font.hhea.ascent font.hhea.descent 0.5]
include : FlipAround MIDDLE [mix font.'OS/2'.usWinAscent (-font.'OS/2'.usWinDescent) 0.5]
create-glyph 'pwlAngleLeft' : glyph-construction
assign-unicode 0xE0B3
include glyphs.pwlAngleRight
include : FlipAround MIDDLE [mix font.hhea.ascent font.hhea.descent 0.5]
include : FlipAround MIDDLE [mix font.'OS/2'.usWinAscent (-font.'OS/2'.usWinDescent) 0.5]
create-glyph 'pwlLock' : glyph-construction
assign-unicode 0xE0A2

View File

@ -106,4 +106,16 @@ symbol-block 'Musical'
widths.rhs fine
g4 (SB + noteSize) operTop
bezcontrols.absolute RIGHTSB y1 RIGHTSB y2
g4 x3 y3
g4 x3 y3
symbol-block 'Metric marks'
create-glyph 'metmark' : glyph-construction
assign-unicode 0xE09F
include : VBar MIDDLE (-font.'OS/2'.usWinDescent) (font.'OS/2'.usWinAscent) SHOULDERFINE
include : HBar MIDDLE WIDTH 0 SHOULDERFINE
include : HBar MIDDLE WIDTH CAP SHOULDERFINE
include : HBar MIDDLE WIDTH XH SHOULDERFINE
include : HBar MIDDLE WIDTH DESCENDER SHOULDERFINE
include : HBar 0 MIDDLE parenMid SHOULDERFINE
include : HBar 0 MIDDLE parenTop SHOULDERFINE
include : HBar 0 MIDDLE parenBot SHOULDERFINE

View File

@ -6,7 +6,7 @@ copyright = 'Copyright (c) 2015 Belleve Invis.'
licence = '''This font software is licenced under the SIL Open Font Licence, Version 1.1. This is licence is avaliable with a FAQ at: http://scripts.sil.org/OFL. This font software is distributes on an 'AS IS' basis, without warranties or conditions of any kind, either express or implied. See the SIL Open Font licence fot the specific language, premissions and limitations governing your use of this font software.'''
leading = 1250 # Line height times 1000.
linegap = 0 # Additional line gap.
#linegap = 0 # Additional line gap.
width = 500 # Character width. Increase this if you think that Iosevka is too narrow.
cap = 735 # Cap height (as well as ascender).
xheight = 530 # X-height.