mirror of
https://github.com/protesilaos/iosevka-comfy.git
synced 2026-09-10 07:16:16 -04:00
* Upstream now supports inheriting glyph variants, so we do just that.
Makes the build plans easier to manage.
* After lots of tests, the '@' sign uses a tall three-fold style which
(i) does not give off a faux bold weight, meaning that it does not
have more typographic colour than it ought to, (ii) does not look like
concentric circles at small point sizes the way four-folded variants
do, (iii) is not too short to the point where it might be mistaken for
a regular 'a' or simply be hard to discern, the way the Fira-style
version is, and (iv) has a recognisable shape at all point sizes and
widths.
* All "wide" builds use an 'm' character with three legs of equal
length. Whereas the "narrow" builds have an 'm' with a shorter middle
leg. The relevant part from the README:
Note that the `iosevka-comfy-duo`, `iosevka-comfy-wide`, and
`iosevka-comfy-wide-fixed` use a different style for the `m`
character. Instead of the one with a shorter middle leg, they let
all legs have the same length. The short middle leg in `m` that
we need in the narrow monospaced variants is necessary for
legibility, especially at small point sizes. Otherwise it is a
gimmick, so we remove it in the "wider" builds.
* To keep track of things, this commit marks the release of Iosevka
Comfy version '0.1.0' (even though the project has been viable for
close to two years now).
Done using upstream version 'v15.4.2', commit '76a87155'.
484 lines
14 KiB
TOML
484 lines
14 KiB
TOML
[buildPlans.iosevka-comfy] # <iosevka-comfy> is your plan name
|
||
family = "Iosevka Comfy" # Font menu family name
|
||
spacing = "normal" # Optional; Values: `normal`, `quasi-proportional`, `quasi-proportional-extension-only`, `term`, `fontconfig-mono`, or `fixed`
|
||
serifs = "sans" # Optional; Values: `sans` or `slab`
|
||
|
||
###################################################################################################
|
||
# Configure variants
|
||
|
||
# # Optional; Whether to inherit a `ss##` variant
|
||
# [buildPlans.iosevka-comfy.variants]
|
||
# inherits = "ss01"
|
||
|
||
# Optional; Configure single character's variant
|
||
[buildPlans.iosevka-comfy.variants.design]
|
||
cv01 = 1 # A cap straight
|
||
cv02 = 1 # B cap straight
|
||
cv03 = 1 # C cap serifless
|
||
cv04 = 6 # D cap curly with top and bottom serif (without serifs TODO reads like TOOO at small point sizes)
|
||
cv05 = 1 # E cap serifless
|
||
cv06 = 1 # F cap serifless
|
||
cv07 = 4 # G cap toothed
|
||
cv08 = 1 # H cap serifless
|
||
cv09 = 1 # I cap long serifs
|
||
cv10 = 2 # J cap serified
|
||
cv11 = 2 # K cap curly
|
||
cv12 = 1 # L cap serifless
|
||
cv13 = 3 # M cap short middle leg slanted sides
|
||
cv14 = 1 # N cap symmetric
|
||
cv15 = 1 # P cap straight
|
||
cv16 = 4 # Q cap crossing tail
|
||
cv17 = 1 # R cap straight
|
||
cv18 = 1 # S cap serifless
|
||
cv19 = 1 # T cap serifless
|
||
cv20 = 3 # U cap serifless
|
||
cv21 = 1 # V cap straight
|
||
cv22 = 1 # W straight
|
||
cv23 = 1 # X cap straight
|
||
cv24 = 1 # Y cap straight
|
||
cv25 = 1 # Z cap straight
|
||
cv26 = 10 # a single storey earless tailed bottom
|
||
cv27 = 1 # b toothed
|
||
cv28 = 1 # c serifless
|
||
cv29 = 1 # d toothed
|
||
cv33 = 1 # h straight
|
||
cv34 = 10 # i serified flat tailed
|
||
cv35 = 6 # j flat hook serified
|
||
cv37 = 10 # l serified flat tailed
|
||
cv42 = 9 # r compact
|
||
cv43 = 1 # s serifless
|
||
cv44 = 2 # t flat hook
|
||
cv45 = 4 # u tailed
|
||
cv49 = 6 # y cursive flat terminal hook
|
||
cv53 = 1 # Λ, Δ lambda and delta cap straight
|
||
cv54 = 2 # α alpha straight tailed
|
||
VXAA = 1 # δ delta rounded top
|
||
cv55 = 1 # Γ gamma cap straight
|
||
cv56 = 6 # ι iota serified flat tailed
|
||
cv57 = 2 # λ lambda top tailed
|
||
VXAC = 1 # μ me tailless
|
||
VXAB = 2 # ξ xe flat top
|
||
cv71 = 13 # 0 oval dashed forward slash
|
||
cv74 = 2 # 3 arched
|
||
cv76 = 2 # 5 open contour
|
||
cv78 = 1 # 7 straight
|
||
cv79 = 3 # 8 two asymmetric circles
|
||
cv81 = 2 # ~ tilde low
|
||
cv82 = 2 # * asterisk five-pointed low
|
||
cv83 = 1 # _ underscore right below baseline
|
||
cv85 = 1 # ^ uptick high
|
||
cv86 = 1 # ( parentheses normal slope
|
||
cv87 = 2 # { braces curly
|
||
cv88 = 1 # # column straight
|
||
cv90 = 4 # @ three-fold, tall height
|
||
cv91 = 2 # $ dollar strike through
|
||
cv92 = 2 # ¢ cent strike through
|
||
cv93 = 1 # % percent dots
|
||
cv94 = 1 # | bar natural slope
|
||
cv95 = 2 # ≥ equal-or-{higher,lower} slanted
|
||
cv96 = 1 # ' single quote straight
|
||
cv97 = 1 # ` grave/backtick straight
|
||
cv98 = 1 # ? smooth
|
||
cv99 = 2 # .:; square punctuation marks
|
||
VXDD = 2 # ijäöü square diacretics
|
||
|
||
# Optional; Configure single character's variant for Upright and Oblique; Overrides [design]
|
||
[buildPlans.iosevka-comfy.variants.upright]
|
||
cv30 = 1 # e straight
|
||
cv31 = 16 # f serifless bottom flat top crossbar at x height
|
||
cv32 = 9 # g single storey flat hook earless cornered top
|
||
cv36 = 1 # k straight
|
||
cv38 = 6 # m earless double arch short middle leg
|
||
cv39 = 3 # n earless straight
|
||
cv40 = 2 # p earless
|
||
cv41 = 2 # q earless
|
||
cv46 = 1 # v straight
|
||
cv47 = 1 # w straight
|
||
cv48 = 1 # x straight
|
||
cv50 = 1 # z straight
|
||
cv72 = 3 # 1 serified with base
|
||
cv73 = 1 # 2 straight
|
||
cv75 = 3 # 4 semi-open contour
|
||
cv77 = 3 # 6 straight
|
||
cv80 = 3 # 9 straight
|
||
cv89 = 2 # & et open top (ampersand)
|
||
|
||
# Optional; Configure single character's variant for Italic only; Overrides [design]
|
||
[buildPlans.iosevka-comfy.variants.italic]
|
||
cv30 = 2 # e curly
|
||
cv31 = 14 # f extended flat top bottom hook
|
||
cv32 = 7 # g single storey flat hook
|
||
cv36 = 2 # k curly
|
||
cv38 = 2 # m straight middle shortleg
|
||
cv39 = 1 # n straight
|
||
cv40 = 1 # p straight
|
||
cv41 = 1 # q straight
|
||
cv46 = 2 # v curly
|
||
cv47 = 2 # w curly short middle top
|
||
cv48 = 2 # x curly
|
||
cv50 = 4 # z curly
|
||
cv72 = 2 # 1 serified no base
|
||
cv73 = 2 # 2 curly
|
||
cv75 = 1 # 4 closed contour crossing
|
||
cv77 = 1 # 6 closed contour
|
||
cv80 = 1 # 9 closed contour
|
||
cv89 = 4 # & et open top toothed (ampersand)
|
||
|
||
# End variant section
|
||
###################################################################################################
|
||
|
||
###################################################################################################
|
||
# Override default building weights
|
||
# When buildPlans.<plan name>.weights is absent, all weights would built and mapped to
|
||
# default values.
|
||
# IMPORTANT : Currently "menu" and "css" property only support numbers between 0 and 1000.
|
||
# and "shape" properly only supports number between 100 and 900 (inclusive).
|
||
# If you decide to use custom weights you have to define all the weights you
|
||
# plan to use otherwise they will not be built.
|
||
[buildPlans.iosevka-comfy.weights.light]
|
||
shape = 300
|
||
menu = 300
|
||
css = 300
|
||
|
||
[buildPlans.iosevka-comfy.weights.semilight]
|
||
shape = 350
|
||
menu = 350
|
||
css = 350
|
||
|
||
[buildPlans.iosevka-comfy.weights.regular]
|
||
shape = 400
|
||
menu = 400
|
||
css = 400
|
||
|
||
[buildPlans.iosevka-comfy.weights.bold]
|
||
shape = 700
|
||
menu = 700
|
||
css = 700
|
||
|
||
[buildPlans.iosevka-comfy.weights.extrabold]
|
||
shape = 800
|
||
menu = 800
|
||
css = 800
|
||
|
||
# End weight section
|
||
###################################################################################################
|
||
|
||
###################################################################################################
|
||
# Override default building slope sets
|
||
# When this section is absent, all slopes would be built.
|
||
|
||
[buildPlans.iosevka-comfy.slopes.upright]
|
||
angle = 0 # Angle in degrees. Valid range [0, 15]
|
||
shape = "upright" # Slope grade used for shape selection. `upright` | `oblique` | `italic`
|
||
menu = "upright" # Slope grade used for naming. `upright` | `oblique` | `italic`
|
||
css = "normal" # Slope grade used for webfont CSS. `normal` | `oblique` | `italic`
|
||
|
||
[buildPlans.iosevka-comfy.slopes.italic]
|
||
angle = 9.4
|
||
shape = "italic"
|
||
menu = "italic"
|
||
css = "italic"
|
||
|
||
# End slope section
|
||
###################################################################################################
|
||
|
||
###################################################################################################
|
||
# Override default building widths
|
||
# When buildPlans.<plan name>.widths is absent, all widths would built and mapped to
|
||
# default values.
|
||
# IMPORTANT : Currently "shape" property only supports numbers between 434 and 664 (inclusive),
|
||
# while "menu" only supports integers between 1 and 9 (inclusive).
|
||
# The "shape" parameter specifies the unit width, measured in 1/1000 em. The glyphs'
|
||
# width are equal to, or a simple multiple of the unit width.
|
||
# If you decide to use custom widths you have to define all the widths you plan to use,
|
||
# otherwise they will not be built.
|
||
|
||
# [buildPlans.iosevka-comfy.widths.condensed]
|
||
# shape = 485
|
||
# menu = 3
|
||
# css = "condensed"
|
||
|
||
[buildPlans.iosevka-comfy.widths.normal]
|
||
shape = 525 # Unit Width, measured in 1/1000 em.
|
||
menu = 5 # Width grade for the font's names.
|
||
css = "normal" # "font-stretch' property of webfont CSS.
|
||
|
||
# [buildPlans.iosevka-comfy.widths.expanded]
|
||
# shape = 600
|
||
# menu = 7
|
||
# css = "expanded"
|
||
|
||
# End width section
|
||
###################################################################################################
|
||
|
||
###################################################################################################
|
||
# Metric overrides
|
||
# Certain metrics like line height (leading) could be overridden in your build plan file.
|
||
# Edit the values to change the metrics. Remove this section when overriding is not needed.
|
||
|
||
[buildPlans.iosevka-comfy.metric-override]
|
||
leading = 1100
|
||
|
||
# End metric override section
|
||
###################################################################################################
|
||
|
||
|
||
# Iosevka Comfy variants
|
||
# ======================
|
||
# Same glyph overrides and metrics, except for the spacing.
|
||
|
||
|
||
# Fixed spacing (no ligatures)
|
||
# ----------------------------
|
||
[buildPlans.iosevka-comfy-fixed]
|
||
family = "Iosevka Comfy Fixed"
|
||
spacing = "fixed"
|
||
serifs = "sans"
|
||
|
||
# It seems we can inherit variants, but not weights, slopes, widths,
|
||
# metric-override...
|
||
[buildPlans.iosevka-comfy-fixed.variants]
|
||
inherits = "buildPlans.iosevka-comfy"
|
||
|
||
[buildPlans.iosevka-comfy-fixed.weights.light]
|
||
shape = 300
|
||
menu = 300
|
||
css = 300
|
||
|
||
[buildPlans.iosevka-comfy-fixed.weights.semilight]
|
||
shape = 350
|
||
menu = 350
|
||
css = 350
|
||
|
||
[buildPlans.iosevka-comfy-fixed.weights.regular]
|
||
shape = 400
|
||
menu = 400
|
||
css = 400
|
||
|
||
[buildPlans.iosevka-comfy-fixed.weights.bold]
|
||
shape = 700
|
||
menu = 700
|
||
css = 700
|
||
|
||
[buildPlans.iosevka-comfy-fixed.weights.extrabold]
|
||
shape = 800
|
||
menu = 800
|
||
css = 800
|
||
|
||
[buildPlans.iosevka-comfy-fixed.slopes.upright]
|
||
angle = 0
|
||
shape = "upright"
|
||
menu = "upright"
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-fixed.slopes.italic]
|
||
angle = 9.4
|
||
shape = "italic"
|
||
menu = "italic"
|
||
css = "italic"
|
||
|
||
[buildPlans.iosevka-comfy-fixed.widths.normal]
|
||
shape = 525
|
||
menu = 5
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-fixed.metric-override]
|
||
leading = 1100
|
||
|
||
|
||
|
||
# Duo spacing (quasi-proportional)
|
||
# --------------------------------
|
||
[buildPlans.iosevka-comfy-duo]
|
||
family = "Iosevka Comfy Duo"
|
||
spacing = "quasi-proportional"
|
||
serifs = "sans"
|
||
|
||
# It seems we can inherit variants, but not weights, slopes, widths,
|
||
# metric-override...
|
||
[buildPlans.iosevka-comfy-duo.variants]
|
||
inherits = "buildPlans.iosevka-comfy"
|
||
|
||
# The short middle leg in 'm' that we need in the narrow monospaced
|
||
# variants is necessary for legibility, especially at small point sizes.
|
||
# Otherwise it is a gimmick, so we remove it in the "wider" builds.
|
||
[buildPlans.iosevka-comfy-duo.variants.upright]
|
||
cv38 = 5 # m earless normal middle leg
|
||
|
||
[buildPlans.iosevka-comfy-duo.variants.italic]
|
||
cv38 = 1 # m straight normal middle leg
|
||
|
||
[buildPlans.iosevka-comfy-duo.weights.light]
|
||
shape = 300
|
||
menu = 300
|
||
css = 300
|
||
|
||
[buildPlans.iosevka-comfy-duo.weights.semilight]
|
||
shape = 350
|
||
menu = 350
|
||
css = 350
|
||
|
||
[buildPlans.iosevka-comfy-duo.weights.regular]
|
||
shape = 400
|
||
menu = 400
|
||
css = 400
|
||
|
||
[buildPlans.iosevka-comfy-duo.weights.bold]
|
||
shape = 700
|
||
menu = 700
|
||
css = 700
|
||
|
||
[buildPlans.iosevka-comfy-duo.weights.extrabold]
|
||
shape = 800
|
||
menu = 800
|
||
css = 800
|
||
|
||
[buildPlans.iosevka-comfy-duo.slopes.upright]
|
||
angle = 0
|
||
shape = "upright"
|
||
menu = "upright"
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-duo.slopes.italic]
|
||
angle = 9.4
|
||
shape = "italic"
|
||
menu = "italic"
|
||
css = "italic"
|
||
|
||
[buildPlans.iosevka-comfy-duo.widths.normal]
|
||
shape = 525
|
||
menu = 5
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-duo.metric-override]
|
||
leading = 1100
|
||
|
||
|
||
|
||
# Like iosevka-comfy but expanded
|
||
# -------------------------------
|
||
[buildPlans.iosevka-comfy-wide]
|
||
family = "Iosevka Comfy Wide"
|
||
spacing = "normal"
|
||
serifs = "sans"
|
||
|
||
# It seems we can inherit variants, but not weights, slopes, widths,
|
||
# metric-override...
|
||
[buildPlans.iosevka-comfy-wide.variants]
|
||
inherits = "buildPlans.iosevka-comfy"
|
||
|
||
# The short middle leg in 'm' that we need in the narrow monospaced
|
||
# variants is necessary for legibility, especially at small point sizes.
|
||
# Otherwise it is a gimmick, so we remove it in the "wider" builds.
|
||
[buildPlans.iosevka-comfy-wide.variants.upright]
|
||
cv38 = 5 # m earless normal middle leg
|
||
|
||
[buildPlans.iosevka-comfy-wide.variants.italic]
|
||
cv38 = 1 # m straight normal middle leg
|
||
|
||
[buildPlans.iosevka-comfy-wide.weights.light]
|
||
shape = 300
|
||
menu = 300
|
||
css = 300
|
||
|
||
[buildPlans.iosevka-comfy-wide.weights.semilight]
|
||
shape = 350
|
||
menu = 350
|
||
css = 350
|
||
|
||
[buildPlans.iosevka-comfy-wide.weights.regular]
|
||
shape = 400
|
||
menu = 400
|
||
css = 400
|
||
|
||
[buildPlans.iosevka-comfy-wide.weights.bold]
|
||
shape = 700
|
||
menu = 700
|
||
css = 700
|
||
|
||
[buildPlans.iosevka-comfy-wide.weights.extrabold]
|
||
shape = 800
|
||
menu = 800
|
||
css = 800
|
||
|
||
[buildPlans.iosevka-comfy-wide.slopes.upright]
|
||
angle = 0
|
||
shape = "upright"
|
||
menu = "upright"
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-wide.slopes.italic]
|
||
angle = 9.4
|
||
shape = "italic"
|
||
menu = "italic"
|
||
css = "italic"
|
||
|
||
# For the default width, check buildPlans.iosevka-comfy.widths.normal
|
||
[buildPlans.iosevka-comfy-wide.widths.normal]
|
||
shape = 625
|
||
menu = 7
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-wide.metric-override]
|
||
leading = 1100
|
||
|
||
|
||
|
||
# Like iosevka-comfy-wide but fixed monospace (no ligatures)
|
||
# ----------------------------------------------------------
|
||
[buildPlans.iosevka-comfy-wide-fixed]
|
||
family = "Iosevka Comfy Wide Fixed"
|
||
spacing = "fixed"
|
||
serifs = "sans"
|
||
|
||
# It seems we can inherit variants, but not weights, slopes, widths,
|
||
# metric-override...
|
||
[buildPlans.iosevka-comfy-wide-fixed.variants]
|
||
inherits = "buildPlans.iosevka-comfy-wide"
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.weights.light]
|
||
shape = 300
|
||
menu = 300
|
||
css = 300
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.weights.semilight]
|
||
shape = 350
|
||
menu = 350
|
||
css = 350
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.weights.regular]
|
||
shape = 400
|
||
menu = 400
|
||
css = 400
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.weights.bold]
|
||
shape = 700
|
||
menu = 700
|
||
css = 700
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.weights.extrabold]
|
||
shape = 800
|
||
menu = 800
|
||
css = 800
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.slopes.upright]
|
||
angle = 0
|
||
shape = "upright"
|
||
menu = "upright"
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.slopes.italic]
|
||
angle = 9.4
|
||
shape = "italic"
|
||
menu = "italic"
|
||
css = "italic"
|
||
|
||
# For the default width, check buildPlans.iosevka-comfy.widths.normal
|
||
[buildPlans.iosevka-comfy-wide-fixed.widths.normal]
|
||
shape = 625
|
||
menu = 7
|
||
css = "normal"
|
||
|
||
[buildPlans.iosevka-comfy-wide-fixed.metric-override]
|
||
leading = 1100
|