Add support for the libertinus family of fonts (#11899)

File format change.
This commit is contained in:
Juergen Spitzmueller 2020-07-09 11:46:07 +02:00
parent 780d9a5f4c
commit 8cb9a6d3f6
5 changed files with 199 additions and 5 deletions

View File

@ -519,6 +519,7 @@
\TestPackage{libertineMono-type1}
\TestPackage{libertineMono}
\TestPackage{libertineRoman}
\TestPackage{libertinus}
\TestPackage{lmodern}
\TestPackage{luximono}
\TestPackage{mathdesign}% for Roman fonts

View File

@ -1,5 +1,5 @@
#LyX 2.4 created this file. For more info see https://www.lyx.org/
\lyxformat 595
\lyxformat 597
\begin_document
\begin_header
\save_transient_properties true
@ -1181,6 +1181,81 @@ Libertine Mono
\emph default
typewriter font.
This font is shipped with libertine font package as of February 2013.
\change_inserted -712698321 1594287772
\end_layout
\begin_layout Subsection
Libertin
\change_deleted -712698321 1594287776
e Mono
\change_inserted -712698321 1594287776
us
\change_unchanged
\end_layout
\begin_layout Description
Found:
\begin_inset Info
type "package"
arg "libertinus"
\end_inset
\end_layout
\begin_layout Description
CTAN:
\family typewriter
fonts/libertin
\change_inserted -712698321 1594287840
us
\change_deleted -712698321 1594287840
e
\change_unchanged
/
\end_layout
\begin_layout Description
Notes: The
\family sans
libertin
\change_deleted -712698321 1594287845
eMono-type1
\change_inserted -712698321 1594287845
us
\change_unchanged
\family default
package provides support for the
\emph on
Libertin
\change_deleted -712698321 1594287851
e Mono
\emph default
typewriter font
\change_inserted -712698321 1594287856
\emph on
us
\emph default
family of fonts
\change_deleted -712698321 1594287920
.
This font is shipped with libertine font package as of February 2013
\change_inserted -712698321 1594287938
, a derivate of the
\emph on
Libertine
\emph default
and
\emph on
Biolinum
\emph default
family of fonts with dome extra features
\change_unchanged
.
\end_layout
\begin_layout Subsection

View File

@ -318,6 +318,25 @@ AltFont libertine-legacy
Package libertine
EndFont
Font libertinus
GuiName "Libertinus"
Family rm
OsfOption osf
Package libertinus
PackageOptions serif
CompleteFont libertinus-full
MoreOptions 1
EndFont
AltFont libertinus-full
GuiName "Libertine"
Family rm
OsfOption osf
Package libertinus
MoreOptions 1
EndFont
Font lmodern
GuiName "Latin Modern Roman"
Family rm
@ -941,6 +960,24 @@ Font kurierlc
SwitchDefault 1
EndFont
Font LibertinusSans-LF
GuiName "Libertinus Sans"
Family sf
Requires libertinus
SwitchDefault 1
OsfFont LibertinusSans-OsF
OsfFontOnly 1
ScaleCommand \renewcommand*{\LibertinusSans@scale}{$$val}
EndFont
AltFont LibertinusSans-OsF
GuiName "Libertinus Sans"
Family sf
Requires libertinus
SwitchDefault 1
ScaleCommand \renewcommand*{\LibertinusSans@scale}{$$val}
EndFont
Font lmss
GuiName "Latin Modern Sans"
Family sf
@ -1139,6 +1176,14 @@ AltFont libertine-mono-type1
Package libertineMono-type1
EndFont
Font LibertinusMono-TLF
GuiName "Libertinus Mono"
Family tt
Requires libertinus
SwitchDefault 1
ScaleCommand \renewcommand*{\LibertinusMono@scale}{$$val}
EndFont
Font lmtt
GuiName "Latin Modern Typewriter"
Family tt

View File

@ -194,6 +194,8 @@ def createFontMapping(fontlist):
'FiraSansUltralight,ultralight'],
"sans", "sf", "FiraSans", "scaled", "lf", "true")
fm.expandFontMapping(['FiraMono'], "typewriter", "tt", "FiraMono", "scaled", "lf", "true")
elif font == 'libertinus':
fm.expandFontMapping(['libertinus,serif'], "roman", None, "libertinus", None, "osf")
return fm
def convert_fonts(document, fm, osfoption = "osf"):
@ -3849,6 +3851,75 @@ def revert_line_vspaces(document):
subst = put_cmd_in_ert(insets[inset])
document.body[i : end + 1] = subst
def convert_libertinus_rm_fonts(document):
"""Handle Libertinus serif fonts definition to LaTeX"""
if not get_bool_value(document.header, "\\use_non_tex_fonts"):
fm = createFontMapping(['Libertinus'])
convert_fonts(document, fm)
def revert_libertinus_rm_fonts(document):
"""Revert Libertinus serif font definition to LaTeX"""
if not get_bool_value(document.header, "\\use_non_tex_fonts"):
fontmap = dict()
fm = createFontMapping(['libertinus'])
if revert_fonts(document, fm, fontmap):
add_preamble_fonts(document, fontmap)
def revert_libertinus_sftt_fonts(document):
" Revert Libertinus sans and tt font definitions to LaTeX "
if find_token(document.header, "\\use_non_tex_fonts false", 0) != -1:
preamble = ""
# first sf font
i = find_token(document.header, "\\font_sans \"LibertinusSans-LF\"", 0)
if i != -1:
j = find_token(document.header, "\\font_sans_osf true", 0)
if j != -1:
add_to_preamble(document, ["\\renewcommand{\\sfdefault}{LibertinusSans-OsF}"])
document.header[j] = "\\font_sans_osf false"
else:
add_to_preamble(document, ["\\renewcommand{\\sfdefault}{LibertinusSans-LF}"])
document.header[i] = document.header[i].replace("LibertinusSans-LF", "default")
sf_scale = 100.0
sfval = find_token(document.header, "\\font_sf_scale", 0)
if sfval == -1:
document.warning("Malformed LyX document: Missing \\font_sf_scale.")
else:
sfscale = document.header[sfval].split()
val = sfscale[1]
sfscale[1] = "100"
document.header[sfval] = " ".join(sfscale)
try:
# float() can throw
sf_scale = float(val)
except:
document.warning("Invalid font_sf_scale value: " + val)
if sf_scale != "100.0":
add_to_preamble(document, ["\\renewcommand*{\\LibertinusSans@scale}{" + str(sf_scale / 100.0) + "}"])
# now tt font
i = find_token(document.header, "\\font_typewriter \"LibertinusMono-TLF\"", 0)
if i != -1:
add_to_preamble(document, ["\\renewcommand{\\ttdefault}{LibertinusMono-TLF}"])
document.header[i] = document.header[i].replace("LibertinusMono-TLF", "default")
tt_scale = 100.0
ttval = find_token(document.header, "\\font_tt_scale", 0)
if ttval == -1:
document.warning("Malformed LyX document: Missing \\font_tt_scale.")
else:
ttscale = document.header[ttval].split()
val = ttscale[1]
ttscale[1] = "100"
document.header[ttval] = " ".join(ttscale)
try:
# float() can throw
tt_scale = float(val)
except:
document.warning("Invalid font_tt_scale value: " + val)
if tt_scale != "100.0":
add_to_preamble(document, ["\\renewcommand*{\\LibertinusMono@scale}{" + str(tt_scale / 100.0) + "}"])
##
# Conversion hub
@ -3907,10 +3978,12 @@ convert = [
[593, [convert_counter_maintenance]],
[594, []],
[595, []],
[596, [convert_parskip]]
[596, [convert_parskip]],
[597, [convert_libertinus_rm_fonts]]
]
revert = [[595, [revert_parskip,revert_line_vspaces]],
revert = [[595, [revert_libertinus_rm_fonts,revert_libertinus_sftt_fonts]],
[595, [revert_parskip,revert_line_vspaces]],
[594, [revert_ams_spaces]],
[593, [revert_counter_inset]],
[592, [revert_counter_maintenance]],

View File

@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
#define LYX_FORMAT_LYX 596 // spitz: parskip
#define LYX_FORMAT_TEX2LYX 596
#define LYX_FORMAT_LYX 597 // spitz: libertinus fonts
#define LYX_FORMAT_TEX2LYX 597
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER