Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build process gets stuck when building iosevka-extended #551

Closed
deathaxe opened this issue May 24, 2020 · 21 comments
Closed

Build process gets stuck when building iosevka-extended #551

deathaxe opened this issue May 24, 2020 · 21 comments

Comments

@deathaxe
Copy link

  • Your font version: 09e5063
  • Your font variant: SS09
  • Your operating system (name and version): Windows 10 x64 1903
  • Your application using Iosevka: -

If you have problem when building Iosevka, please provide these information:

  • Your Node.js version: v14.3.0 (also tried v13.12.0 before)
  • Your otfcc version: This is Polymorphic otfccbuild, version 0.10.4. (from https://github.com/caryll/otfcc/releases)
  • Your parameters.toml, paste if modified:
[iosevka]
copyright = 'Copyright (c) 2015-2019 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.'''
manufacturer = 'Belleve Invis'
designer = 'Belleve Invis'
description = 'Spatial efficient monospace font family for programming. Built from code. http://be5invis.github.io/Iosevka'

leading = 1250     # Default line height times 1000.
descenderPad = 0   # Additional line height, added to descender.
width = 600        # Character width. Increase this if you think that Iosevka is too narrow.   <-- changed from 500 to 600!
cap = 735          # Cap height (as well as ascender).
xheight = 530      # X-height.
#descender = -205  # Depth of descender. Currently unused.
winMetricAscenderPad  = 0 # Padding of Win ascnder metrics to avoid clipping. See #343
winMetricDescenderPad = 0 # Padding of Win descender metrics to avoid clipping. See #343

symbolMid = 340    # Center of parens, maths, geometrics...
parenSize = 966    # Size of parens, brackets, braces, slashes, etc.
operSize = 0.80    # Size of mathematical operators (cups, etc.)
tackSize = 0.80    # Size of logical operators (tacks, etc.)
bgopSize = 1.10    # Size of "taller" mathematical operators
plusSize = 0.52    # Size of plus and arith symbols
pictSize = 1.10    # Size of pictograms
arrowHeight = 1.50 # Height of arrows

contrast = 1.11111 # Stroke width contrast.

slantAngle = 0     # Slant angle, in degrees.

accent = 155       # Height of accent marks.
accentx = 200      # Width of accent marks.
overshoot = -8     # Vertical overshoot for arcs.
overshootx = -8    # Horizontal overshoot for arcs.
oxhook = -2        # Horizontal overshoot for hook tips.
fovershoot = -40   # Overshoot of the top end of italic `f`.

shoulderfineMin = 0.8

isItalic = false   # Use italic shapes?
isOblique = false  # Use oblique shapes?

lllcrowdedness = 3.33333333

spacing = 1        # Spacing indicator

# Powerline-specific parameters
powerlineScaleY = 1 # Vertical scale
powerlineScaleX = 1 # Horizontal scale
powerlineShiftY = 0 # Vertical shift
powerlineShiftX = 0 # Horizontal shift

# Diversity widths
diversityM = 1
diversityF = 1
diversityI = 1
diversityII = 1

# Whether to generate CV-SS features
enableCvSs = true

# Whether to generate ligation
enableLigation = true

# Excluded code points
excludedCodePointRanges = []

[shapeWeight.blend.400]
stroke = 72       # Primary stroke width
sb = 60           # Primary sidebearings
essx = 1.12       # Proportion of widen of center of "S"
dotsize = 125     # Size of dots
periodsize = 140  # Size of period

jut = 85          # Length of slab serif
vjut = 145        # Length of vertical slab serif
longjut = 175      # Length of long serifs, like that in `i`.

smooth = 195             # Vertical arc size in capital letters.
smallsmooth = 200        # Vertical arc size in lowercase letters.
smoothadjust = 110       # Parameter to balance arcs in slanted shapes.
superness = 2.275        # Superness of arcs.
tightHookSuperness = 2.3 # superness of tight hooks

barpos = 0.525       # Position of most crossbars
overlaypos = 0.52    # Position of the overlay mark.
ebarpos = 0.50       # Position of the middle bar in `e`.
gbarpos = 0.42
fivebarpos = 0.64
fbarpos = 0.91       # Position of the middle bar in `f`
fbarStrokeAdj = 0.25 # Portion of the fill above the f-bar position

rbalance = 60
rbalance2 = 15
tbalance = 50
tbalance2 = 30
jbalance = 63
fbalance = 6
onebalance = 30

hook  = 155        # Hook depth in most letters.
ahook = 130
shook = 110
jhook = 135
fhook = 120
hookx = 170
rhook = 110

cthin = 0.75
cthinb = 0.5
vtipfine = 0.8
vtipfineSlab = 0.9

[shapeWeight.blend.100]
jut = 85
vjut = 145
smooth = 195
barpos = 0.525
rhook = 110
rbalance = 60
rbalance2 = 15
cthin = 0.9
cthinb = 0.9
vtipfine = 1
vtipfineSlab = 1
stroke = 18
sb = 72
dotsize = 53
periodsize = 55

[shapeWeight.blend.200]
jut = 85
vjut = 145
smooth = 195
barpos = 0.525
rhook = 110
rbalance = 60
rbalance2 = 15
cthin = 0.75
cthinb = 0.75
vtipfine = 1
vtipfineSlab = 1
stroke = 36
sb = 68
dotsize = 70
periodsize = 77

[shapeWeight.blend.300]
jut = 85
vjut = 145
smooth = 195
barpos = 0.525
rhook = 110
rbalance = 60
rbalance2 = 15
cthin = 0.75
cthinb = 0.5
vtipfine = 0.9
vtipfineSlab = 0.9
stroke = 56
sb = 64
dotsize = 100
periodsize = 115

[shapeWeight.blend.500]
essx = 1.12
jut = 85
vjut = 157
smooth = 200
barpos = 0.525
rhook = 110
rbalance = 60
rbalance2 = 15
stroke = 84
sb = 57
dotsize = 135
periodsize = 160

[shapeWeight.blend.600]
essx = 1.07
jut = 85
vjut = 170
smooth = 203
barpos = 0.525
rhook = 110
rbalance = 55
rbalance2 = 20
stroke = 97
sb = 54
dotsize = 145
periodsize = 168

[shapeWeight.blend.700]
essx = 1.06
jut = 89
vjut = 179
smooth = 206
barpos = 0.51
rhook = 95
rbalance = 52
rbalance2 = 23
stroke = 106
sb = 50
dotsize = 157
periodsize = 180

[shapeWeight.blend.800]
essx = 1.05
jut = 96
vjut = 189
smooth = 210
barpos = 0.51
rhook = 97
rbalance = 50
rbalance2 = 25
stroke = 116
sb = 45
dotsize = 167
periodsize = 188

[shapeWeight.blend.900]
essx = 1.03
jut = 100
vjut = 199
smooth = 215
barpos = 0.51
rhook = 105
rbalance = 50
rbalance2 = 25
stroke = 126
sb = 42
dotsize = 180
periodsize = 200

[verbose]
verbose = true

### Slantness
[s-italic]
isItalic = true
slantAngle = 10
jhook = 120

[s-oblique]
isOblique = true
slantAngle = 10
jhook = 120

### Slab variant
[slab]
slab = true
onebalance = 10
overshootx = -16
[slab.multiplies]
sb = 1.1

### Spacings
# Fixed variant
[sp-fixed]
spacing = 0
enableLigation = false
forceMonospace = true

# Terminal variant
[sp-term]
spacing = 0

###### Widths
# NOTE: this section is highly experimental
# HANDLE WITH EXTREME CARE
# Expanded : I heard someone want it being wider...
[wd-7.multiplies]
width   = 1.152 # 576mem for normal char
sb      = 1.375
jut     = 1.15
longjut = 1.15
rhook   = 1.15
rbalance = 1.152
tbalance = 1.100

[extended]
inherits = ['wd-7']

# Compressed : And someone else want it being narrower
[wd-3.multiplies]
width = 0.9
sb = 0.9
[condensed]
inherits = ['wd-3']

[diversity-1]
diversityM = 1.25
diversityF = 1.00
diversityI = 0.75
diversityII = 0.75

[diversity-2]
diversityM = 1.25
diversityF = 0.75
diversityI = 0.75
diversityII = 0.5

[no-ligation]
enableLigation = false
[nolig] # For compatibility
enableLigation = false

[no-cv-ss]
enableCvSs = false

###################################################################################################
### Metric-override hives
### These hives are now discouraged in favor of 'metric-override' in build plans but they are
### still supported in version 3.x.

###### Leading
[leading-750]
leading = 750
[leading-1000]
leading = 1000
[leading-1250]
leading = 1250
[leading-1500]
leading = 1500
[leading-1750]
leading = 1750
[leading-2000]
leading = 2000

###### Win metric pad
[win-metric-pad-0]
winMetricAscenderPad = 0
winMetricDescenderPad = 0
[win-metric-pad-50]
winMetricAscenderPad = 50
winMetricDescenderPad = 50
[win-metric-pad-100]
winMetricAscenderPad = 100
winMetricDescenderPad = 100
[win-metric-pad-150]
winMetricAscenderPad = 150
winMetricDescenderPad = 150
[win-metric-pad-200]
winMetricAscenderPad = 200
winMetricDescenderPad = 200
[win-metric-pad-250]
winMetricAscenderPad = 250
winMetricDescenderPad = 250
[win-metric-pad-300]
winMetricAscenderPad = 300
winMetricDescenderPad = 300

###### Powerline
[powerline-scale-y-750]
powerlineScaleY = 0.75
[powerline-scale-y-875]
powerlineScaleY = 0.875
[powerline-scale-y-1000]
powerlineScaleY = 1
[powerline-scale-y-1125]
powerlineScaleY = 1.125
[powerline-scale-y-1250]
powerlineScaleY = 1.25
[powerline-scale-y-1375]
powerlineScaleY = 1.375
[powerline-scale-y-1500]
powerlineScaleY = 1.5
[powerline-scale-x-750]
powerlineScaleX = 0.75
[powerline-scale-x-875]
powerlineScaleX = 0.875
[powerline-scale-x-1000]
powerlineScaleX = 1
[powerline-scale-x-1125]
powerlineScaleX = 1.125
[powerline-scale-x-1250]
powerlineScaleX = 1.25
[powerline-scale-x-1375]
powerlineScaleX = 1.375
[powerline-scale-x-1500]
powerlineScaleX = 1.5
[powerline-shift-y-n500]
powerlineShiftY = -500
[powerline-shift-y-n450]
powerlineShiftY = -450
[powerline-shift-y-n400]
powerlineShiftY = -400
[powerline-shift-y-n350]
powerlineShiftY = -350
[powerline-shift-y-n300]
powerlineShiftY = -300
[powerline-shift-y-n250]
powerlineShiftY = -250
[powerline-shift-y-n200]
powerlineShiftY = -200
[powerline-shift-y-n150]
powerlineShiftY = -150
[powerline-shift-y-n100]
powerlineShiftY = -100
[powerline-shift-y-n50]
powerlineShiftY = -50
[powerline-shift-y-0]
powerlineShiftY = 0
[powerline-shift-y-p50]
powerlineShiftY = 50
[powerline-shift-y-p100]
powerlineShiftY = 100
[powerline-shift-y-p150]
powerlineShiftY = 150
[powerline-shift-y-p200]
powerlineShiftY = 200
[powerline-shift-y-p250]
powerlineShiftY = 250
[powerline-shift-y-p300]
powerlineShiftY = 300
[powerline-shift-y-p350]
powerlineShiftY = 350
[powerline-shift-y-p400]
powerlineShiftY = 400
[powerline-shift-y-p450]
powerlineShiftY = 450
[powerline-shift-y-p500]
powerlineShiftY = 500
[powerline-shift-x-n500]
powerlineShiftX = -500
[powerline-shift-x-n450]
powerlineShiftX = -450
[powerline-shift-x-n400]
powerlineShiftX = -400
[powerline-shift-x-n350]
powerlineShiftX = -350
[powerline-shift-x-n300]
powerlineShiftX = -300
[powerline-shift-x-n250]
powerlineShiftX = -250
[powerline-shift-x-n200]
powerlineShiftX = -200
[powerline-shift-x-n150]
powerlineShiftX = -150
[powerline-shift-x-n100]
powerlineShiftX = -100
[powerline-shift-x-n50]
powerlineShiftX = -50
[powerline-shift-x-0]
powerlineShiftX = 0
[powerline-shift-x-p50]
powerlineShiftX = 50
[powerline-shift-x-p100]
powerlineShiftX = 100
[powerline-shift-x-p150]
powerlineShiftX = 150
[powerline-shift-x-p200]
powerlineShiftX = 200
[powerline-shift-x-p250]
powerlineShiftX = 250
[powerline-shift-x-p300]
powerlineShiftX = 300
[powerline-shift-x-p350]
powerlineShiftX = 350
[powerline-shift-x-p400]
powerlineShiftX = 400
[powerline-shift-x-p450]
powerlineShiftX = 450
[powerline-shift-x-p500]
powerlineShiftX = 500

# Compatibility PUA ligature sample
# [[iosevka.compLig]]
# unicode = 57600 # 0xE100
# featureTag = 'XV00'
# sequence = '<*>'

# Exclude code points
[exclude-check-and-cross-symbol.appends]
excludedCodePointRanges = [[10003, 10008]] 
  • Your build-plans.toml, paste if modified:
paste here
  • Your private-build-plans.toml, if present:
paste here
  • The detailed error log:
paste here

When running npm run build -- ttf::iosevka-ss09 the build process stucks at 66% (74 tasks pending) with all 4 CPU cores run at 100% for hours.

Looks like an endless loop being caused by the width = 600 parameter - the only one changed.

grafik

grafik

I've built several versions with a width of 600 before. The last was 3.0.0-rc.8. It also took some time but finally got through it.

@wimstefan
Copy link

I can confirm this with git commit eea51f6 the install process is stopped at extendedheavyoblique when running with npm run build -- ttf::<MYBUILD> ...
Complete 193 - Executing 02 - Pending 003 (97%) ███████████████████▒ | CPU:019% ██▒▒▒▒▒▒▒▒ - RAM:053% █████▒▒▒▒▒

@be5invis
Copy link
Owner

The modification “weight = 600” is NOT tested, and may frequently create broken shape/hangs.

@be5invis
Copy link
Owner

weight = 600 combined with "Extended" will create a variant that having width around 700. Is it intensional?
Considering you have already modified the width, you can simply disable extended variants like this:

[buildPlans.<your build name>.normal]
shape = 5
menu  = 5
css   = "normal"

This will remove extended subfamilies and leave "normal" subfamilies only.

@wimstefan
Copy link

Hmm I haven't changed anything in my config and it was working until the last commit ...
Here's how my private-build-plan.toml looks like:

[buildPlans.iosevka-artesanal-curly]
family = "Iosevka Artesanal Curly"
design = [
  "artesanal",
  "slab",
  "v-f-tailed",
  "v-g-opendoublestorey",
  "v-i-italic",
  "v-k-curly",
  "v-l-italic",
  "v-m-shortleg",
  "v-r-top-serifed",
  "v-eszet-traditional",
  "v-v-curly",
  "v-w-curly",
  "v-y-curly",
  "v-capital-y-curly",
  "v-x-curly",
  "v-zero-reverse-slashed",
  "v-three-flattop",
  "v-seven-serifed",
  "v-nine-turned-six",
  "v-tilde-high",
  "v-asterisk-high",
  "v-paragraph-high",
  "v-caret-high"
]
[buildPlans.iosevka-artesanal-curly.weights.regular]
shape = 400
menu  = 400
css   = 400
[buildPlans.iosevka-artesanal-curly.weights.book]
shape = 450
menu  = 450
css   = 450
[buildPlans.iosevka-artesanal-curly.weights.medium]
shape = 500
menu  = 500
css   = 500
[buildPlans.iosevka-artesanal-curly.weights.semibold]
shape = 600
menu  = 600
css   = 600
[buildPlans.iosevka-artesanal-curly.weights.bold]
shape = 670
menu  = 700
css   = 700
[buildPlans.iosevka-artesanal-curly.weights.extrabold]
shape = 800
menu  = 800
css   = 800
[buildPlans.iosevka-artesanal-curly.weights.heavy]
shape = 900
menu  = 900
css   = 900

@be5invis
Copy link
Owner

be5invis commented May 24, 2020

@wimstefan I cannnot repro this with unmodified parameters.toml. I build dev branch every day and nothing strange happened.
Could you please double check that the your parameters.toml is indeed unchanged (i.e., identical to the original repository's)?

@wimstefan
Copy link

@be5invis there's definitely no change in the parameters.toml
I have a couple of small changes to the slant in a private.toml like this

[artesanal]
slantAngle = 2
[artesanal.multiplies]
sb = 0.88
width = 0.88

And yes I'm building my fonts also after every commit without a problem ...

@be5invis
Copy link
Owner

be5invis commented May 24, 2020

I can confirm this with git commit eea51f6

@wimstefan What build are you testing? @deathaxe's build or yours?

be5invis added a commit that referenced this issue May 24, 2020
@be5invis
Copy link
Owner

I've submitted a patch so it should fix this break. Closed.

@wimstefan
Copy link

I'm testing my own configuration as shown above ... since you've committed a couple of things to the dev branch I've reached commit 0213055 in the meantime. But it still hangs on the same spot despite adding your tip above to my build configuration:

[buildPlans.<your build name>.normal]
shape = 5
menu  = 5
css   = "normal"

I've jumped on this issue since I was presuming it is the same sort of issue I'm experiencing as well. I'm sorry if I disturbed the original issue report ...

be5invis added a commit that referenced this issue May 24, 2020
@be5invis
Copy link
Owner

@wimstefan Are you adding slope even for regular? This is definently out of our support scope...You can consider remove the heavy weight if you do not need it.

@wimstefan
Copy link

@wimstefan Are you adding slope even for regular? This is definently out of our support scope...You can consider remove the heavy weight if you do not need it.

It's a very slight slant only and I'm using it already more than 2 months in this private.toml - before I was using the same values in parameters.toml without a problem ...
I'm just wondering why it worked until today?

I need the different weights btw since I'm using Iosevka nowadays for all my application, wm and GUI fonts as well ;-)

@wimstefan
Copy link

OK now it's getting interesting ...

I've checked out the latest commit, removed the slant.Angle from my private.toml and deleted all build and dist directories ... but the build process still hangs at the same spot ?!?

What else can I do to get more information what's going wrong?

@be5invis
Copy link
Owner

@wimstefan You also shrink the characters width which may also cause problem.
I may add tracing later but for now removing Heavy (or reducing its shape weight?) should help.

@be5invis
Copy link
Owner

be5invis commented May 24, 2020

@wimstefan Actually, it is hanging when building the Pound Sterling (£) symbol, the upper hook is too tight so the geometry engine cannot handle it. A patch has been submitted.
And, since you reduced the characters' width, I strongly suggest you to also reduce the stroke width to avoid broken shapes (I saw a lot in Heavy).

@wimstefan
Copy link

wow thanks for finding the reason for this issue! That was certainly not an easy one. Hats off Sir!

I can confirm that removing the Heavy from private-build-plans.toml helped initially to finish the building process and after pulling the latest commit 132c917 it was even possible again to build the Heavy variants. Thanks a lot for that!

I try to follow your suggestion but am not sure how to achieve that? I'm not sure which value I should use which is corresponding to the sb and width values I've already configured. I only find stroke values with big number in shapeWeight.blend.xxx settings ...

@be5invis
Copy link
Owner

be5invis commented May 24, 2020

@wimstefan Just change the shape weight in your build plan.
The stroke width will be inferred from them.

[buildPlans.iosevka-artesanal-curly.weights.regular]
shape = 400 # May Reduce this
menu  = 400
css   = 400
[buildPlans.iosevka-artesanal-curly.weights.book]
shape = 450 # May Reduce this
menu  = 450
css   = 450
[buildPlans.iosevka-artesanal-curly.weights.medium]
shape = 500 # May Reduce this
menu  = 500
css   = 500
[buildPlans.iosevka-artesanal-curly.weights.semibold]
shape = 600 # May Reduce this
menu  = 600
css   = 600
[buildPlans.iosevka-artesanal-curly.weights.bold]
shape = 670 # May Reduce this
menu  = 700
css   = 700
[buildPlans.iosevka-artesanal-curly.weights.extrabold]
shape = 800 # May Reduce this
menu  = 800
css   = 800
[buildPlans.iosevka-artesanal-curly.weights.heavy]
shape = 900 # May Reduce this
menu  = 900
css   = 900

@wimstefan
Copy link

That's good to know. Unfortunately I'm not clever enough to understand the logic behind the building of this marvelous font :-/ Thank you so much for helping me!!!
I'll give it a try immediately and report back ...

@deathaxe
Copy link
Author

The modification “weight = 600” is NOT tested, and may frequently create broken shape/hangs.

I modified width not weight. The normal font is quite too narrow, I think. That's the only issue I want to fix for this otherwise incredible font.

I use the customized (width = 600) iosevka SS09 Light Extended in Sublime Text.

Don't find it too wide.

grafik

Haven't learned too much about font editing so don't have any idea how to build my own build plan or which values needed to configure to do certain customizaiton. Was happy about being able to make the font a little wider at all.

@be5invis
Copy link
Owner

@deathaxe Extended subfamily will further multiply the width by 1.152 so your final width will become 0.6912em. Maybe I need to introduce a new family (wd-9, Ultra Extended)?

Anyway...

  1. The hang is fixed in last build.
  2. Changing parameters.toml is strongly discouraged. Use private-build-plans.toml for customization.

@deathaxe
Copy link
Author

Thanks, very much.

Tried to adjust it to match the width of Source Code Pro, which is quite wide as well.
The default extended variant is 0.576em? Maybe 0.7em is indeed too wide for general use.

Having some safe options to increase the width would be appreciated. Not sure if an "Ultra Extended" needs to be built by default or just supported for private build plans. Maybe there are just too many aspects of taste to decide it atm.

The wd-# are the recommended/only way to define width in private build plans as well (instead of a width value)?

Just not sure what a good multiplier would look like, maybe 1.2 (0.6em), 1.25 (0.625em) or even 1.3 (0.65em)?

Looks like I definitely need to dig a bit deeper into all that stuff to get the best out of the font using private-build-plans. ;-)

@deathaxe
Copy link
Author

Built a variant with a (hacked ;-) ) width value of 550 which results in 0.63em for extended font variants. From what I can see, a wd-9 with 1.25 (0.625em) might be very much ok.

grafik

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants