[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: pango picking system fonts (was Re: ligature issue 2656)
From: |
Masamichi HOSODA |
Subject: |
Issue: pango picking system fonts (was Re: ligature issue 2656) |
Date: |
Sat, 28 Mar 2015 08:22:39 +0900 (JST) |
> - Pango picking system fonts, resulting in unpredictable output
For this issue,
I've written a patch to set the Helvetica substitute
and Courier substitute as the default font of provisional.
With this patch, pango doesn't choose system fonts
for default san-serif font and monospace font.
> - thinking about choosing default fonts for sans-serif and monospace
This patch should be rewritten in accordance
with the conclusions of the font choosing.
>From 66a27d465cc2cf30929a6acf6e3c61ec3a41b5e1 Mon Sep 17 00:00:00 2001
From: Masamichi Hosoda <address@hidden>
Date: Sat, 28 Mar 2015 01:37:58 +0900
Subject: [PATCH] Add sans-serif and monospace fonts
Nimbus Sans L (Helvetica substitute) as sans-serif font.
Nimbus Mono L (Courier substitute) as monospace font.
---
config.make.in | 4 ++
configure.ac | 96 +++++++++++++++++++++++++++++++--
mf/GNUmakefile | 36 ++++++++++++-
scm/font.scm | 8 +--
scripts/auxiliar/pfx2ttf-mono.fontforge | 36 +++++++++++++
5 files changed, 172 insertions(+), 8 deletions(-)
create mode 100644 scripts/auxiliar/pfx2ttf-mono.fontforge
diff --git a/config.make.in b/config.make.in
index 9837fc3..c8b776d 100644
--- a/config.make.in
+++ b/config.make.in
@@ -91,6 +91,10 @@ vimdir = $(lilypond_datadir)/vim
NCSB_SOURCE_FILES = @NCSB_SOURCE_FILES@
NCSB_DIR = @NCSB_DIR@
+HELV_SOURCE_FILES = @HELV_SOURCE_FILES@
+HELV_DIR = @HELV_DIR@
+COUR_SOURCE_FILES = @COUR_SOURCE_FILES@
+COUR_DIR = @COUR_DIR@
################################################################
## PROGRAMS
diff --git a/configure.ac b/configure.ac
index f740237..0c431eb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,10 +34,22 @@ AC_ARG_ENABLE(guile2,
AC_ARG_WITH(ncsb-dir,
[AS_HELP_STRING([--with-ncsb-dir=DIR],
- [location of Century Schoolbook fonts.])],
+ [location of Century Schoolbook L fonts.])],
[NCSB_DIR=$withval],
[NCSB_DIR=""])
+AC_ARG_WITH(helv-dir,
+ [AS_HELP_STRING([--with-helv-dir=DIR],
+ [location of Nimbus Sans L (Helvetica) fonts.])],
+ [HELV_DIR=$withval],
+ [HELV_DIR=""])
+
+AC_ARG_WITH(cour-dir,
+ [AS_HELP_STRING([--with-cour-dir=DIR],
+ [location of Nimbus Mono L (Courier) fonts.])],
+ [COUR_DIR=$withval],
+ [COUR_DIR=""])
+
reloc_b=no
AC_ARG_ENABLE(relocation,
[AS_HELP_STRING([--enable-relocation],
@@ -61,7 +73,7 @@ AC_SUBST(LINK_GXX_STATICALLY)
STEPMAKE_COMPILE
AC_CHECK_PROG(FCLIST, fc-list, fc-list)
-AC_MSG_CHECKING([for New Century Schoolbook PFB files])
+AC_MSG_CHECKING([for Century Schoolbook L PFB files])
AC_SUBST(NCSB_SOURCE_FILES)
AC_SUBST(NCSB_DIR)
if test "$NCSB_DIR" = ""; then
@@ -90,7 +102,7 @@ if test "$NCSB_DIR" != "" ; then
fi
if test "$NCSB_DIR" = "" -o "$MISSING_NCSB_SOURCE_FILES" !=
"$INCOMPLETE_NCSB_SOURCE_FILES"; then
AC_MSG_RESULT(no)
- STEPMAKE_ADD_ENTRY(REQUIRED,International New Century Schoolbook fonts)
+ STEPMAKE_ADD_ENTRY(REQUIRED,International Century Schoolbook L fonts)
if test "$NCSB_DIR" = ""; then
if test "$FCLIST" = ""; then
STEPMAKE_ADD_ENTRY(REQUIRED,'(install the fc-list utility from
FontConfig, or use --with-ncsb-dir)')
@@ -108,6 +120,84 @@ else
AC_MSG_RESULT(yes)
fi
+AC_MSG_CHECKING([for Nimbus Sans L (Helvetica) PFB files])
+AC_SUBST(HELV_SOURCE_FILES)
+AC_SUBST(HELV_DIR)
+if test "$HELV_DIR" = ""; then
+ HELV_DIR=$NCSB_DIR
+fi
+if test "$HELV_DIR" != "" ; then
+ for f in n019003l.pfb n019004l.pfb n019023l.pfb n019024l.pfb; do
+ if test ! -f "$HELV_DIR/$f"; then
+ MISSING_HELV_SOURCE_FILES="$f $MISSING_HELV_SOURCE_FILES"
+ else
+ if test "`grep Cyrillic "$HELV_DIR/$f"`" = ""; then
+ INCOMPLETE_HELV_SOURCE_FILES="$f $INCOMPLETE_HELV_SOURCE_FILES"
+ else
+ HELV_SOURCE_FILES="$HELV_DIR/$f $HELV_SOURCE_FILES"
+ fi
+ fi
+ done
+fi
+if test "$HELV_DIR" = "" -o "$MISSING_HELV_SOURCE_FILES" !=
"$INCOMPLETE_HELV_SOURCE_FILES"; then
+ AC_MSG_RESULT(no)
+ STEPMAKE_ADD_ENTRY(REQUIRED,International Nimbus Sans L fonts)
+ if test "$HELV_DIR" = ""; then
+ if test "$FCLIST" = ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(install the fc-list utility from
FontConfig, or use --with-helv-dir)')
+ else
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(make sure the fc-list utility can see
them, or use --with-helv-dir)')
+ fi
+ fi
+ if test "$MISSING_HELV_SOURCE_FILES" != ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(these files are missing:
$MISSING_HELV_SOURCE_FILES)')
+ fi
+ if test "$INCOMPLETE_HELV_SOURCE_FILES" != ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(these files do not contain Cyrillic
characters: $INCOMPLETE_HELV_SOURCE_FILES)')
+ fi
+else
+ AC_MSG_RESULT(yes)
+fi
+
+AC_MSG_CHECKING([for Nimbus Mono L (Courier) PFB files])
+AC_SUBST(COUR_SOURCE_FILES)
+AC_SUBST(COUR_DIR)
+if test "$COUR_DIR" = ""; then
+ COUR_DIR=$NCSB_DIR
+fi
+if test "$COUR_DIR" != "" ; then
+ for f in n022003l.pfb n022004l.pfb n022023l.pfb n022024l.pfb; do
+ if test ! -f "$COUR_DIR/$f"; then
+ MISSING_COUR_SOURCE_FILES="$f $MISSING_COUR_SOURCE_FILES"
+ else
+ if test "`grep Cyrillic "$COUR_DIR/$f"`" = ""; then
+ INCOMPLETE_COUR_SOURCE_FILES="$f $INCOMPLETE_COUR_SOURCE_FILES"
+ else
+ COUR_SOURCE_FILES="$COUR_DIR/$f $COUR_SOURCE_FILES"
+ fi
+ fi
+ done
+fi
+if test "$COUR_DIR" = "" -o "$MISSING_COUR_SOURCE_FILES" !=
"$INCOMPLETE_COUR_SOURCE_FILES"; then
+ AC_MSG_RESULT(no)
+ STEPMAKE_ADD_ENTRY(REQUIRED,International Nimbus Mono L fonts)
+ if test "$COUR_DIR" = ""; then
+ if test "$FCLIST" = ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(install the fc-list utility from
FontConfig, or use --with-cour-dir)')
+ else
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(make sure the fc-list utility can see
them, or use --with-cour-dir)')
+ fi
+ fi
+ if test "$MISSING_COUR_SOURCE_FILES" != ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(these files are missing:
$MISSING_COUR_SOURCE_FILES)')
+ fi
+ if test "$INCOMPLETE_COUR_SOURCE_FILES" != ""; then
+ STEPMAKE_ADD_ENTRY(REQUIRED,'(these files do not contain Cyrillic
characters: $INCOMPLETE_COUR_SOURCE_FILES)')
+ fi
+else
+ AC_MSG_RESULT(yes)
+fi
+
AC_LANG([C++])
STEPMAKE_PYTHON(REQUIRED, 2.4, 3.0)
diff --git a/mf/GNUmakefile b/mf/GNUmakefile
index 141ba63..646234c 100644
--- a/mf/GNUmakefile
+++ b/mf/GNUmakefile
@@ -40,6 +40,16 @@ NCSB_OTFS = $(addprefix $(outdir)/,CenturySchL-Ital.otf \
CenturySchL-Roma.otf \
CenturySchL-Bold.otf)
+HELV_OTFS = $(addprefix $(outdir)/,NimbusSanL-ReguItal.otf \
+ NimbusSanL-BoldItal.otf \
+ NimbusSanL-Regu.otf \
+ NimbusSanL-Bold.otf)
+
+COUR_OTFS = $(addprefix $(outdir)/,NimbusMonL-ReguObli.otf \
+ NimbusMonL-BoldObli.otf \
+ NimbusMonL-Regu.otf \
+ NimbusMonL-Bold.otf)
+
LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
LISP_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.lisp)
ENC_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.enc)
@@ -74,6 +84,8 @@ $(outdir)/emmentaler-%.genpe:
$(buildscript-dir)/gen-emmentaler-scripts
ALL_GEN_FILES = $(ENC_FILES) \
$(NCSB_OTFS) \
+ $(HELV_OTFS) \
+ $(COUR_OTFS) \
$(OTF_FILES) \
$(SVG_FILES) \
$(WOFF_FILES)
@@ -87,7 +99,7 @@ INSTALLATION_OUT_SUFFIXES = 1 2
INSTALLATION_OUT_DIR1 = $(local_lilypond_datadir)/fonts/otf
INSTALLATION_OUT_FILES1 = $(OTF_FILES) \
- $(NCSB_OTFS)
+ $(NCSB_OTFS) $(HELV_OTFS) $(COUR_OTFS)
INSTALLATION_OUT_DIR2 = $(local_lilypond_datadir)/fonts/svg
INSTALLATION_OUT_FILES2 = $(SVG_FILES) $(WOFF_FILES)
@@ -172,3 +184,25 @@ $(addprefix $(outdir)/,CenturySchL-Ital.otf \
CenturySchL-Bold.otf \
CenturySchL-BoldItal.otf): $(outdir)/CenturySchL-Roma.otf
$(UPDATE_TARGET)
+
+$(outdir)/NimbusSanL-Regu.otf: $(HELV_SOURCE_FILES) \
+ $(auxscript-dir)/pfx2ttf.fontforge
+ $(foreach i, $(basename $(HELV_SOURCE_FILES)), \
+ $(FONTFORGE) -script $(auxscript-dir)/pfx2ttf.fontforge \
+ $(i).pfb $(i).afm $(outdir)/ && ) true
+
+$(addprefix $(outdir)/,NimbusSanL-ReguItal.otf \
+ NimbusSanL-Bold.otf \
+ NimbusSanL-BoldItal.otf): $(outdir)/NimbusSanL-Regu.otf
+ $(UPDATE_TARGET)
+
+$(outdir)/NimbusMonL-Regu.otf: $(COUR_SOURCE_FILES) \
+ $(auxscript-dir)/pfx2ttf-mono.fontforge
+ $(foreach i, $(basename $(COUR_SOURCE_FILES)), \
+ $(FONTFORGE) -script $(auxscript-dir)/pfx2ttf-mono.fontforge \
+ $(i).pfb $(i).afm $(outdir)/ && ) true
+
+$(addprefix $(outdir)/,NimbusMonL-ReguObli.otf \
+ NimbusMonL-Bold.otf \
+ NimbusMonL-BoldObli.otf): $(outdir)/NimbusMonL-Regu.otf
+ $(UPDATE_TARGET)
diff --git a/scm/font.scm b/scm/font.scm
index 11c9719..0582a49 100644
--- a/scm/font.scm
+++ b/scm/font.scm
@@ -253,8 +253,8 @@ used. This is used to select the proper design size for
the text fonts.
(music "emmentaler")
(brace "emmentaler")
(roman "Century Schoolbook L")
- (sans "sans-serif")
- (typewriter "monospace")
+ (sans "Nimbus Sans L")
+ (typewriter "Nimbus Mono L")
(factor 1))
(let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))
(add-music-fonts n 'feta music brace feta-design-size-mapping factor)
@@ -274,8 +274,8 @@ used. This is used to select the proper design size for
the text fonts.
(define-public (make-century-schoolbook-tree factor)
(make-pango-font-tree
"Century Schoolbook L"
- "sans-serif"
- "monospace"
+ "Nimbus Sans L"
+ "Nimbus Mono L"
factor))
(define-public all-text-font-encodings
diff --git a/scripts/auxiliar/pfx2ttf-mono.fontforge
b/scripts/auxiliar/pfx2ttf-mono.fontforge
new file mode 100644
index 0000000..7b80494
--- /dev/null
+++ b/scripts/auxiliar/pfx2ttf-mono.fontforge
@@ -0,0 +1,36 @@
+Open($1);
+MergeKern($2)
+
+
+# The AFM files of `New Century Schoolbook' family as distributed within the
+# urw-fonts-1.0.7pre41.tar.bz2 archive contain a bunch of ligatures which
+# shouldn't be active by default:
+#
+# T + M -> trademark
+# N + o -> afii61352
+# i + j -> ij
+# I + J -> IJ
+#
+# This font bundle is shipped by Fedora Core 6 and other GNU/Linux
+# distributions; we simply remove those ligatures.
+
+# Monospace font shouldn't have these ligature.
+#
+# f + i -> fi
+# f + l -> fl
+
+SelectIf("trademark", "trademark", \
+ "afii61352", "afii61352", \
+ "ij", "ij", \
+ "IJ", "IJ", \
+ "fi", "fi", \
+ "fl", "fl");
+if (Strtol($version) < 20070501)
+ RemoveATT("Ligature", "*", "*");
+else
+ RemovePosSub("*");
+endif
+
+Generate($3 + $fontname + ".otf");
+
+# EOF
--
2.1.4
\version "2.19.18"
#(set-global-staff-size 50)
\markup \roman { Roman }
\markup \roman { fi ff fl }
\markup \roman \italic { Roman Italic }
\markup \roman \italic { fi ff fl }
\markup \roman \bold { Roman Bold }
\markup \roman \bold { fi ff fl }
\markup \roman \italic \bold { Roman Italic Bold }
\markup \roman \italic \bold { fi ff fl }
\markup \sans { Sans }
\markup \sans { fi ff fl }
\markup \sans \italic { Sans Italic }
\markup \sans \italic { fi ff fl }
\markup \sans \bold { Sans Bold }
\markup \sans \bold { fi ff fl }
\markup \sans \italic \bold { Sans Italic Bold }
\markup \sans \italic \bold { fi ff fl }
\markup \typewriter { Typewriter }
\markup \typewriter { fi ff fl }
\markup \typewriter \italic { Typewriter Italic }
\markup \typewriter \italic { fi ff fl }
\markup \typewriter \bold { Typewriter Bold }
\markup \typewriter \bold { fi ff fl }
\markup \typewriter \italic \bold { Typewriter Italic Bold }
\markup \typewriter \italic \bold { fi ff fl }
- Re: Ghostscript 9.15, (continued)
- Re: Ghostscript 9.15, Masamichi HOSODA, 2015/03/25
- Re: Ghostscript 9.15, David Kastrup, 2015/03/25
- Re: Ghostscript 9.15, Masamichi HOSODA, 2015/03/25
- Re: ligature issue 2656 (was Re: Ghostscript 9.15), Masamichi HOSODA, 2015/03/26
- Re: ligature issue 2656 (was Re: Ghostscript 9.15), Urs Liska, 2015/03/26
- Re: ligature issue 2656 (was Re: Ghostscript 9.15), David Kastrup, 2015/03/26
- Re: ligature issue 2656 (was Re: Ghostscript 9.15), Urs Liska, 2015/03/26
- Re: ligature issue 2656 (was Re: Ghostscript 9.15), David Kastrup, 2015/03/26
- Issue: pango picking system fonts (was Re: ligature issue 2656),
Masamichi HOSODA <=
- Re: Issue: pango picking system fonts, Werner LEMBERG, 2015/03/27
- Re: Issue: pango picking system fonts, Masamichi HOSODA, 2015/03/28
- Re: Ghostscript 9.15, Han-Wen Nienhuys, 2015/03/24