Updated test page for the three more weights. Fixed several defects.

This commit is contained in:
be5invis 2015-12-15 03:06:37 +08:00
parent b26ba95258
commit 0c5ef8051e
7 changed files with 103 additions and 31 deletions

View file

@ -5,6 +5,7 @@ import './support/stroke' as Stroke
import './support/spirokit' as spirokit import './support/spirokit' as spirokit
import './support/transform' as : Transform && [object [transformPoint tp] [untransform utp] inverse] import './support/transform' as : Transform && [object [transformPoint tp] [untransform utp] inverse]
import './support/anchor' as Anchor import './support/anchor' as Anchor
import './support/monotonic-interpolate' as smoothreg
extern global extern global

View file

@ -508,6 +508,7 @@ symbol-block 'A'
include : FlipAround MIDDLE (CAP / 2) include : FlipAround MIDDLE (CAP / 2)
local p : linreg 18 0.075 108 0.075 STROKE local p : linreg 18 0.075 108 0.075 STROKE
if (SLAB && !para.isItalic) : set p : p * 1.275
include : HBarTop [mix SB RIGHTSB p] [mix RIGHTSB SB p] (XH / 2) include : HBarTop [mix SB RIGHTSB p] [mix RIGHTSB SB p] (XH / 2)
alias 'Alpha' 0x391 'A' alias 'Alpha' 0x391 'A'
alias 'cyrA' 0x410 'A' alias 'cyrA' 0x410 'A'

View file

@ -558,7 +558,7 @@ symbol-block 'Psi'
symbol-block 'Omega' symbol-block 'Omega'
define [OmegaShape top extend sma smb] : glyph-construction define [OmegaShape top extend sma smb] : glyph-construction
local fine : STROKE * 0.75 local fine : STROKE * CTHIN
local x1 [mix SB RIGHTSB 0.4] local x1 [mix SB RIGHTSB 0.4]
local x2 (WIDTH - x1) local x2 (WIDTH - x1)
local yattach : top * extend + STROKE local yattach : top * extend + STROKE

View file

@ -14,6 +14,7 @@ local aboveMarkBot (XH + ACCENT * 0.35)
local belowMarkBot (0 - ACCENT * 1.38) local belowMarkBot (0 - ACCENT * 1.38)
local belowMarkTop (0 - ACCENT * 0.35) local belowMarkTop (0 - ACCENT * 0.35)
local commaOvershoot : O * [linreg 16 1 90 (-1) (markHalfStroke * 2)]
### Above marks ### Above marks
symbol-block 'Above marks' symbol-block 'Above marks'
@ -39,7 +40,7 @@ symbol-block 'Above marks'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radiusIn : ACCENT * 0.24 local radiusIn : ACCENT * 0.24
local radiusOut : radiusIn + markFine * 1.75 local radiusOut : radiusIn + markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)]
include : Ring (XH + ACCENT + radiusOut) (XH + ACCENT - radiusOut) (markMiddle - radiusOut) (markMiddle + radiusOut) true include : Ring (XH + ACCENT + radiusOut) (XH + ACCENT - radiusOut) (markMiddle - radiusOut) (markMiddle + radiusOut) true
include : Ring (XH + ACCENT + radiusIn) (XH + ACCENT - radiusIn) (markMiddle - radiusIn) (markMiddle + radiusIn) true include : Ring (XH + ACCENT + radiusIn) (XH + ACCENT - radiusIn) (markMiddle - radiusIn) (markMiddle + radiusIn) true
reverse-last reverse-last
@ -109,7 +110,7 @@ symbol-block 'Above marks'
local tildeWave [linreg 16 2.5 90 1.33 (markHalfStroke * 2)] local tildeWave [linreg 16 2.5 90 1.33 (markHalfStroke * 2)]
local tildeWaveX 0.52 local tildeWaveX 0.52
local tildeWaveEnd [linreg 16 (-0.01) 90 0 (markHalfStroke * 2)] local tildeWaveEnd : [smoothreg {16 60 90} {0 (-0.1) 0}] (markHalfStroke * 2)
local s : new Stroke local s : new Stroke
local outlines : s.set-transform globalTransform local outlines : s.set-transform globalTransform
@ -243,10 +244,10 @@ symbol-block 'Above marks'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius : adviceBlackness 6 local radius : adviceBlackness 6
include : Ring aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius) include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
include : dispiro include : dispiro
widths.rhs : Math.min radius (markFine * 1.75) widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
straight.down.start (markMiddle + radius) (aboveMarkTop - radius) straight.down.start (markMiddle + radius) (aboveMarkTop - radius + commaOvershoot)
quadcontrols 0 0.6 quadcontrols 0 0.6
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius) g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius)
apply-transform : Upright apply-transform : Upright
@ -268,10 +269,10 @@ symbol-block 'Above marks'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius : adviceBlackness 6 local radius : adviceBlackness 6
include : Ring aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius) include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
include : dispiro include : dispiro
widths.lhs : Math.min radius (markFine * 1.75) widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
straight.down.start (markMiddle - radius) (aboveMarkTop - radius) straight.down.start (markMiddle - radius) (aboveMarkTop - radius + commaOvershoot)
quadcontrols 0 0.6 quadcontrols 0 0.6
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius) g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius)
apply-transform : Upright apply-transform : Upright
@ -394,7 +395,7 @@ symbol-block 'Below marks'
set-width 0 set-width 0
assign-unicode 0x328 assign-unicode 0x328
local fine : markHalfStroke * 0.2 local fine : markHalfStroke * [linreg 16 1 90 0.2 (markHalfStroke * 2)]
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2 local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2
local ogonekLeft : markMiddle - markExtend * 0.5 local ogonekLeft : markMiddle - markExtend * 0.5
local ogonekRight : markMiddle + markExtend * 0.85 local ogonekRight : markMiddle + markExtend * 0.85
@ -871,7 +872,7 @@ symbol-block 'Greek Polytonic Marks'
GreekLRDoubleMark 'dasiavaria' 0x1FDD glyphs.revCommaAbove glyphs.variaAbove GreekLRDoubleMark 'dasiavaria' 0x1FDD glyphs.revCommaAbove glyphs.variaAbove
GreekLRDoubleMark 'dasiaoxia' 0x1FDE glyphs.revCommaAbove glyphs.oxiaAbove GreekLRDoubleMark 'dasiaoxia' 0x1FDE glyphs.revCommaAbove glyphs.oxiaAbove
local yc : aboveMarkTop - [adviceBlackness 6] + DOTRADIUS * 0.3 local yc : aboveMarkTop - [adviceBlackness 6] + DOTRADIUS * 0.3 + commaOvershoot
create-glyph 'psiliperispomeni' : glyph-construction create-glyph 'psiliperispomeni' : glyph-construction
set-width 0 set-width 0

View file

@ -173,7 +173,7 @@ symbol-block 'Geometric'
create-glyph 'dottedcircle' : glyph-construction create-glyph 'dottedcircle' : glyph-construction
assign-unicode 0x25CC assign-unicode 0x25CC
local n 12 local n 12
local fine : [adviceBlackness 5] / 2 local fine : adviceBlackness 10
foreach j [range 0 n] : begin foreach j [range 0 n] : begin
local angle : Math.PI * 2 * j / n local angle : Math.PI * 2 * j / n
local cx : MIDDLE + (right - MIDDLE) * [Math.cos angle] local cx : MIDDLE + (right - MIDDLE) * [Math.cos angle]

View file

@ -9,11 +9,11 @@ font = fontforge.open(source)
# Replace accented characters into references # Replace accented characters into references
print " Reference finding: ", font.fontname print " Reference finding: ", font.fontname
font.selection.select(("ranges", "unicode", None), 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF) font.selection.select(("ranges", "unicode", None), 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF)
font.replaceWithReference(1) font.replaceWithReference()
font.selection.all() font.selection.all()
font.selection.select(("less", None), "I.straight", "dotlessi.straight", "l.straight", "ltailBR", "rtailBR") font.selection.select(("less", None), "I.straight", "dotlessi.straight", "l.straight", "ltailBR", "rtailBR")
font.selection.select(("less", "ranges", "unicode"), 0x207A, 0x207E, 0x208A, 0x208E) font.selection.select(("less", "ranges", "unicode"), 0x207A, 0x207E, 0x208A, 0x208E)
font.replaceWithReference(1) font.replaceWithReference()
# Remove overlapped area # Remove overlapped area
print " Overlap Removal: ", font.fontname print " Overlap Removal: ", font.fontname
@ -24,8 +24,8 @@ for i in font:
if len(glyph.references) > 0 and len(glyph.layers["Fore"]) > 0: # a mixed glyph if len(glyph.references) > 0 and len(glyph.layers["Fore"]) > 0: # a mixed glyph
glyph.unlinkRef() glyph.unlinkRef()
glyph.removeOverlap() glyph.removeOverlap()
font.selection.all() #font.selection.all()
font.replaceWithReference(1) #font.replaceWithReference()
print " Simplify: ", font.fontname print " Simplify: ", font.fontname
font.selection.all() font.selection.all()

View file

@ -6,6 +6,39 @@
html { html {
font-size: 14px; font-size: 14px;
} }
@font-face {
font-family: IosevkaWEB;
font-weight: 100;
src: url('assets/iosevka-hair.woff') format('woff'), url('assets/iosevka-hair.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-weight: 100;
font-style: italic;
src: url('assets/iosevka-hairitalic.woff') format('woff'), url('assets/iosevka-hairitalic.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-weight: 200;
src: url('assets/iosevka-thin.woff') format('woff'), url('assets/iosevka-thin.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-weight: 200;
font-style: italic;
src: url('assets/iosevka-thinitalic.woff') format('woff'), url('assets/iosevka-thinitalic.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-weight: 300;
src: url('assets/iosevka-light.woff') format('woff'), url('assets/iosevka-light.ttf') format('truetype');
}
@font-face {
font-family: IosevkaWEB;
font-weight: 300;
font-style: italic;
src: url('assets/iosevka-lightitalic.woff') format('woff'), url('assets/iosevka-lightitalic.ttf') format('truetype');
}
@font-face { @font-face {
font-family: IosevkaWEB; font-family: IosevkaWEB;
src: url('assets/iosevka-regular.woff') format('woff'), url('assets/iosevka-regular.ttf') format('truetype'); src: url('assets/iosevka-regular.woff') format('woff'), url('assets/iosevka-regular.ttf') format('truetype');
@ -26,6 +59,39 @@
font-weight: bold; font-weight: bold;
src: url('assets/iosevka-bolditalic.woff') format('woff'), url('assets/iosevka-bolditalic.ttf') format('truetype'); src: url('assets/iosevka-bolditalic.woff') format('woff'), url('assets/iosevka-bolditalic.ttf') format('truetype');
} }
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 100;
src: url('assets/iosevka-slab-hair.woff') format('woff'), url('assets/iosevka-slab-hair.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 100;
font-style: italic;
src: url('assets/iosevka-slab-hairitalic.woff') format('woff'), url('assets/iosevka-slab-hairitalic.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 200;
src: url('assets/iosevka-slab-thin.woff') format('woff'), url('assets/iosevka-slab-thin.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 200;
font-style: italic;
src: url('assets/iosevka-slab-thinitalic.woff') format('woff'), url('assets/iosevka-slab-thinitalic.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 300;
src: url('assets/iosevka-slab-light.woff') format('woff'), url('assets/iosevka-slab-light.ttf') format('truetype');
}
@font-face {
font-family: IosevkaSlabWEB;
font-weight: 300;
font-style: italic;
src: url('assets/iosevka-slab-lightitalic.woff') format('woff'), url('assets/iosevka-slab-lightitalic.ttf') format('truetype');
}
@font-face { @font-face {
font-family: IosevkaSlabWEB; font-family: IosevkaSlabWEB;
src: url('assets/iosevka-slab-regular.woff') format('woff'), url('assets/iosevka-slab-regular.ttf') format('truetype'); src: url('assets/iosevka-slab-regular.woff') format('woff'), url('assets/iosevka-slab-regular.ttf') format('truetype');
@ -82,7 +148,10 @@
font-size: 2rem; font-size: 2rem;
width: 68rem; width: 68rem;
} }
.bold { font-weight: bold } .hair { font-weight: 100 }
.thin { font-weight: 200 }
.light { font-weight: 300 }
.bold { font-weight: 700 }
.italic { font-style: italic } .italic { font-style: italic }
.show table.block { .show table.block {
width: 68rem; width: 68rem;
@ -186,6 +255,7 @@
min-width: 10rem; min-width: 10rem;
background: #eee; background: #eee;
text-shadow: none; text-shadow: none;
font-size: 0.8em;
} }
#picker:hover .menu .group a:hover { #picker:hover .menu .group a:hover {
background: #ddd; background: #ddd;
@ -249,19 +319,18 @@
} }
var BLOCKSIZE = 16 * 4; var BLOCKSIZE = 16 * 4;
var fonts = [ var fonts = [
[ [ {name: 'iosevka-hair', cls: 'hair', display: 'Iosevka Ultralight'}, {name: 'iosevka-slab-hair', cls: 'slab hair', display: 'Iosevka Slab Ultralight'},
{name: 'iosevka-regular', cls: '', display: 'Iosevka'}, {name: 'iosevka-hairitalic', cls:'hair italic', display: 'Iosevka Ultralight Italic'}, {name: 'iosevka-slab-hairitalic', cls:'slab hair italic', display: 'Iosevka Slab Ultralight Italic'} ],
{name: 'iosevka-bold', cls: 'bold', display: 'Iosevka Bold'}, [ {name: 'iosevka-thin', cls: 'thin', display: 'Iosevka Thin'}, {name: 'iosevka-slab-thin', cls: 'slab thin', display: 'Iosevka Slab Thin'},
{name: 'iosevka-italic', cls:'italic', display: 'Iosevka Italic'}, {name: 'iosevka-thinitalic', cls:'thin italic', display: 'Iosevka Thin Italic'}, {name: 'iosevka-slab-thinitalic', cls:'slab thin italic', display: 'Iosevka Slab Thin Italic'} ],
{name: 'iosevka-bolditalic', cls:'bold italic', display: 'Iosevka Bold Italic'} [ {name: 'iosevka-light', cls: 'light', display: 'Iosevka Light'}, {name: 'iosevka-slab-light', cls: 'slab light', display: 'Iosevka Slab Light'},
], {name: 'iosevka-lightitalic', cls:'light italic', display: 'Iosevka Light Italic'}, {name: 'iosevka-slab-lightitalic', cls:'slab light italic', display: 'Iosevka Slab Light Italic'} ],
[ [ {name: 'iosevka-regular', cls: '', display: 'Iosevka'}, {name: 'iosevka-slab-regular', cls: 'slab', display: 'Iosevka Slab'},
{name: 'iosevka-slab-regular', cls: 'slab', display: 'Iosevka Slab'}, {name: 'iosevka-italic', cls:'italic', display: 'Iosevka Italic'}, {name: 'iosevka-slab-italic', cls:'slab italic', display: 'Iosevka Slab Italic'} ],
{name: 'iosevka-slab-bold', cls: 'slab bold', display: 'Iosevka Slab Bold'}, [ {name: 'iosevka-bold', cls: 'bold', display: 'Iosevka Bold'}, {name: 'iosevka-slab-bold', cls: 'slab bold', display: 'Iosevka Slab Bold'},
{name: 'iosevka-slab-italic', cls:'slab italic', display: 'Iosevka Slab Italic'}, {name: 'iosevka-bolditalic', cls:'bold italic', display: 'Iosevka Bold Italic'}, {name: 'iosevka-slab-bolditalic', cls:'slab bold italic', display: 'Iosevka Slab Bold Italic'} ]
{name: 'iosevka-slab-bolditalic', cls:'slab bold italic', display: 'Iosevka Slab Bold Italic'}
]
]; ];
var REGULAR = 3;
var lipsums = ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur semper ipsum quam, at molestie libero euismod vitae. Etiam vehicula felis mi, et ultricies libero consequat at. Donec consequat, nunc id elementum tempor, lectus orci vulputate leo, eget lobortis lectus nulla sed orci. Donec in dolor non orci aliquet gravida. Nulla volutpat magna et nulla pretium, quis consequat nibh euismod. Suspendisse eget metus enim. Fusce vulputate scelerisque eros et consequat. Quisque dapibus accumsan augue, et semper lectus vehicula sit amet. Ut ornare venenatis tortor, non gravida tellus mattis interdum. In hac habitasse platea dictumst. Donec interdum commodo ex eu tincidunt. Curabitur non fermentum enim. Proin luctus orci ut commodo auctor. Pellentesque accumsan id sem eu semper. Sed non pharetra nibh. Vivamus mattis luctus arcu, a rutrum dui venenatis sit amet. aja ojo ojoined', var lipsums = ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur semper ipsum quam, at molestie libero euismod vitae. Etiam vehicula felis mi, et ultricies libero consequat at. Donec consequat, nunc id elementum tempor, lectus orci vulputate leo, eget lobortis lectus nulla sed orci. Donec in dolor non orci aliquet gravida. Nulla volutpat magna et nulla pretium, quis consequat nibh euismod. Suspendisse eget metus enim. Fusce vulputate scelerisque eros et consequat. Quisque dapibus accumsan augue, et semper lectus vehicula sit amet. Ut ornare venenatis tortor, non gravida tellus mattis interdum. In hac habitasse platea dictumst. Donec interdum commodo ex eu tincidunt. Curabitur non fermentum enim. Proin luctus orci ut commodo auctor. Pellentesque accumsan id sem eu semper. Sed non pharetra nibh. Vivamus mattis luctus arcu, a rutrum dui venenatis sit amet. aja ojo ojoined',
'Troh tper es sos, bo slisxil spôrtjư uzx, cxital posteluf hrvatzem ili bi. Tenis lubôvijm roksăfnâvơi da din. Bo cxtir dajte lubim onă, dev ti silăju môrkva vecxer. Din om leto glfădju problêm. Sâm slơzxju răzumim vnimanie na, vsê ăzia kưdrju prôgram nô. Slôzxju zavoduf nơ den, hcê licơ sxkol toplju so. Vi knigis sidili polozxij bil, ne polnfju ovơcxjư dla, es ônâ mamâ pisajut mălôstis.', 'Troh tper es sos, bo slisxil spôrtjư uzx, cxital posteluf hrvatzem ili bi. Tenis lubôvijm roksăfnâvơi da din. Bo cxtir dajte lubim onă, dev ti silăju môrkva vecxer. Din om leto glfădju problêm. Sâm slơzxju răzumim vnimanie na, vsê ăzia kưdrju prôgram nô. Slôzxju zavoduf nơ den, hcê licơ sxkol toplju so. Vi knigis sidili polozxij bil, ne polnfju ovơcxjư dla, es ônâ mamâ pisajut mălôstis.',
'Жят эним либриз аюдиам ад. Мыа ан одео нонумй опортэры, но дуо вэре эчжынт ыпикурэи. Ан вим алёквюам пыртенакж. Эжт но оратио факэтэ, дольорэ индоктум дыфинитеоным эжт ты.', 'Жят эним либриз аюдиам ад. Мыа ан одео нонумй опортэры, но дуо вэре эчжынт ыпикурэи. Ан вим алёквюам пыртенакж. Эжт но оратио факэтэ, дольорэ индоктум дыфинитеоным эжт ты.',
@ -305,7 +374,7 @@
for(var j = 0; j < ss.length; j++){ ss[j].spaces = new Array(langlen - ss[j].lang.length + 2).join(' ') }; for(var j = 0; j < ss.length; j++){ ss[j].spaces = new Array(langlen - ss[j].lang.length + 2).join(' ') };
return ss; return ss;
})(sampleSentences), })(sampleSentences),
currentFont: fonts[0][0], currentFont: fonts[REGULAR][0],
waterfall: [36, 28, 24, 20, 18, 16, 14, 12, 11, 10], waterfall: [36, 28, 24, 20, 18, 16, 14, 12, 11, 10],
sampleRows: [] sampleRows: []
}, },
@ -350,7 +419,7 @@
el: '#picker', el: '#picker',
data: { data: {
fonts: fonts, fonts: fonts,
current: fonts[0][0] current: fonts[REGULAR][0] // regular
}, },
methods: { methods: {
choose: function(item){ choose: function(item){