Pango loads Tux Paint-supplied fonts on macOS.
Previously Pango loaded system-supplied fonts instead, which could lead to fonts not rendering in a human-readable text. This change fixes https://sourceforge.net/p/tuxpaint/bugs/265/
This commit is contained in:
parent
e00b6b4f4a
commit
3849480fd4
9 changed files with 178 additions and 6 deletions
6
Makefile
6
Makefile
|
|
@ -189,7 +189,7 @@ FRIBIDI_LIB:=$(shell $(PKG_CONFIG) --libs fribidi)
|
||||||
FRIBIDI_CFLAGS:=$(shell $(PKG_CONFIG) --cflags fribidi)
|
FRIBIDI_CFLAGS:=$(shell $(PKG_CONFIG) --cflags fribidi)
|
||||||
|
|
||||||
windows_ARCH_LINKS:=-lgdi32 -lcomdlg32 $(PNG) -lz -lwinspool -lshlwapi $(FRIBIDI_LIB) -liconv -limagequant -mwindows
|
windows_ARCH_LINKS:=-lgdi32 -lcomdlg32 $(PNG) -lz -lwinspool -lshlwapi $(FRIBIDI_LIB) -liconv -limagequant -mwindows
|
||||||
macos_ARCH_LINKS:=$(FRIBIDI_LIB) -limagequant -lSDLmain -Wl,-framework,AppKit -Wl,-framework,Cocoa
|
macos_ARCH_LINKS:=$(FRIBIDI_LIB) -limagequant -lSDLmain -Wl,-framework,AppKit -Wl,-framework,Cocoa $(shell $(PKG_CONFIG) --libs pangoft2)
|
||||||
ios_ARCH_LINKS=$(FRIBIDI_LIB) -limagequant -ljpeg -lbz2 $(shell $(PKG_CONFIG) --libs freetype2 libtiff-4 libwebp libffi harfbuzz libmpg123 ogg vorbisenc vorbisidec libxml-2.0 pangoft2 libpcre)
|
ios_ARCH_LINKS=$(FRIBIDI_LIB) -limagequant -ljpeg -lbz2 $(shell $(PKG_CONFIG) --libs freetype2 libtiff-4 libwebp libffi harfbuzz libmpg123 ogg vorbisenc vorbisidec libxml-2.0 pangoft2 libpcre)
|
||||||
beos_ARCH_LINKS:=-lintl $(PNG) -lz -lbe -lnetwork -liconv $(FRIBIDI_LIB) $(PAPER_LIB) $(STDC_LIB) -limagequant
|
beos_ARCH_LINKS:=-lintl $(PNG) -lz -lbe -lnetwork -liconv $(FRIBIDI_LIB) $(PAPER_LIB) $(STDC_LIB) -limagequant
|
||||||
linux_ARCH_LINKS:=$(PAPER_LIB) $(FRIBIDI_LIB) -limagequant
|
linux_ARCH_LINKS:=$(PAPER_LIB) $(FRIBIDI_LIB) -limagequant
|
||||||
|
|
@ -1108,7 +1108,7 @@ install-macbundle:
|
||||||
@install -d -m 755 $(BUNDLE)/Contents/lib
|
@install -d -m 755 $(BUNDLE)/Contents/lib
|
||||||
@install -m 755 tuxpaint $(BUNDLE)/Contents/MacOS
|
@install -m 755 tuxpaint $(BUNDLE)/Contents/MacOS
|
||||||
@install -m 644 macos/PkgInfo $(BUNDLE)/Contents
|
@install -m 644 macos/PkgInfo $(BUNDLE)/Contents
|
||||||
@VER_VERSION=$(VER_VERSION) macos/template.sh macos/Info.plist.shdoc > macos/Info.plist
|
@VER_VERSION=$(VER_VERSION)$(VER_FLAVOR) macos/template.sh macos/Info.plist.shdoc > macos/Info.plist
|
||||||
@install -m 644 macos/Info.plist $(BUNDLE)/Contents
|
@install -m 644 macos/Info.plist $(BUNDLE)/Contents
|
||||||
@install -m 644 macos/tuxpaint.icns $(BUNDLE)/Contents/Resources
|
@install -m 644 macos/tuxpaint.icns $(BUNDLE)/Contents/Resources
|
||||||
@macos/build-app.sh
|
@macos/build-app.sh
|
||||||
|
|
@ -1120,7 +1120,7 @@ install-iosbundle:
|
||||||
@echo "...Installing iOS App Bundle Support Files..."
|
@echo "...Installing iOS App Bundle Support Files..."
|
||||||
@install -m 755 tuxpaint $(BUNDLE)
|
@install -m 755 tuxpaint $(BUNDLE)
|
||||||
@install -m 644 ios/PkgInfo $(BUNDLE)
|
@install -m 644 ios/PkgInfo $(BUNDLE)
|
||||||
@VER_VERSION=$(VER_VERSION) ios/template.sh ios/Info.plist.shdoc > ios/Info.plist
|
@VER_VERSION=$(VER_VERSION)$(VER_FLAVOR) ios/template.sh ios/Info.plist.shdoc > ios/Info.plist
|
||||||
@install -m 644 ios/Info.plist $(BUNDLE)
|
@install -m 644 ios/Info.plist $(BUNDLE)
|
||||||
@install -m 644 ios/tuxpaint.icns $(BUNDLE)
|
@install -m 644 ios/tuxpaint.icns $(BUNDLE)
|
||||||
@install -m 644 ios/tuxpaint.cfg $(BUNDLE)
|
@install -m 644 ios/tuxpaint.cfg $(BUNDLE)
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,12 @@ http://www.tuxpaint.org/
|
||||||
the installer app
|
the installer app
|
||||||
TOYAMA Shin-ichi <dolphin6k@wmail.plala.or.jp>
|
TOYAMA Shin-ichi <dolphin6k@wmail.plala.or.jp>
|
||||||
|
|
||||||
|
* Pango loads Tux Paint-supplied fonts on macOS.
|
||||||
|
Previously Pango loaded system-supplied fonts instead, which could lead
|
||||||
|
to fonts not rendering in a human-readable text. This change fixes
|
||||||
|
https://sourceforge.net/p/tuxpaint/bugs/265/
|
||||||
|
Mark Kim <markuskimius@gmail.com>
|
||||||
|
|
||||||
* Documentation updates:
|
* Documentation updates:
|
||||||
---------------------
|
---------------------
|
||||||
* New "Quickstart Guide" document added.
|
* New "Quickstart Guide" document added.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ BUNDLE=TuxPaint.app
|
||||||
BINARY="$BUNDLE/Contents/MacOS/tuxpaint"
|
BINARY="$BUNDLE/Contents/MacOS/tuxpaint"
|
||||||
LIBS=`find $BUNDLE/Contents/Resources/lib -type f`
|
LIBS=`find $BUNDLE/Contents/Resources/lib -type f`
|
||||||
LIBDIR="$BUNDLE/Contents/lib"
|
LIBDIR="$BUNDLE/Contents/lib"
|
||||||
CONF_FILES="/opt/local/etc/fonts/fonts.conf"
|
CONF_FILES="macos/fonts.conf"
|
||||||
CONFDIR="$BUNDLE/Contents/Resources/etc"
|
CONFDIR="$BUNDLE/Contents/Resources/etc"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
93
macos/fonts.conf
Normal file
93
macos/fonts.conf
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<fontconfig>
|
||||||
|
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
|
||||||
|
<its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
|
||||||
|
</its:rules>
|
||||||
|
|
||||||
|
<description>Default configuration file</description>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Font directory list
|
||||||
|
-->
|
||||||
|
<dir prefix="cwd">Resources/share/tuxpaint/fonts</dir>
|
||||||
|
<dir prefix="cwd">Resources/share/tuxpaint/fonts/locale</dir>
|
||||||
|
<dir prefix="cwd">share/tuxpaint/fonts</dir>
|
||||||
|
<dir prefix="cwd">share/tuxpaint/fonts/locale</dir>
|
||||||
|
<dir>~/Library/Application Support/TuxPaint/fonts</dir>
|
||||||
|
<dir>~/Library/Application Support/TuxPaint/fonts/locale</dir>
|
||||||
|
<dir>/Library/Application Support/TuxPaint/fonts</dir>
|
||||||
|
<dir>/Library/Application Support/TuxPaint/fonts/locale</dir>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept deprecated 'mono' alias, replacing it with 'monospace'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>mono</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign" binding="same">
|
||||||
|
<string>monospace</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>sans serif</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign" binding="same">
|
||||||
|
<string>sans-serif</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept deprecated 'sans' alias, replacing it with 'sans-serif'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>sans</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign" binding="same">
|
||||||
|
<string>sans-serif</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Load local system customization file
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<include ignore_missing="yes">conf.d</include>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Tux Paint uses DejaVu Sans as the default font but loads it as BitStream Vera font.
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>BitStream Vera</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign" binding="same">
|
||||||
|
<string>DejaVu Sans</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Font cache directory list
|
||||||
|
-->
|
||||||
|
<cachedir>/tmp/fontconfig</cachedir>
|
||||||
|
<cachedir prefix="xdg">fontconfig</cachedir>
|
||||||
|
|
||||||
|
<config>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Rescan configuration every 30 seconds when FcFontSetList is called
|
||||||
|
-->
|
||||||
|
<rescan>
|
||||||
|
<int>30</int>
|
||||||
|
</rescan>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
</fontconfig>
|
||||||
26
src/debug.h
26
src/debug.h
|
|
@ -1,6 +1,32 @@
|
||||||
//#define DEBUG
|
//#define DEBUG
|
||||||
//#define VERBOSE
|
//#define VERBOSE
|
||||||
|
|
||||||
|
/*
|
||||||
|
Enable fontconfig debugging. The value of this variable, which must be a
|
||||||
|
string, but is interpreted as a number, and each bit within that value
|
||||||
|
controls different debugging messages. (from
|
||||||
|
https://www.freedesktop.org/software/fontconfig/fontconfig-user.html#DEBUG)
|
||||||
|
|
||||||
|
Name Value Meaning
|
||||||
|
---------------------------------------------------------
|
||||||
|
MATCH 1 Brief information about font matching
|
||||||
|
MATCHV 2 Extensive font matching information
|
||||||
|
EDIT 4 Monitor match/test/edit execution
|
||||||
|
FONTSET 8 Track loading of font information at startup
|
||||||
|
CACHE 16 Watch cache files being written
|
||||||
|
CACHEV 32 Extensive cache file writing information
|
||||||
|
PARSE 64 (no longer in use)
|
||||||
|
SCAN 128 Watch font files being scanned to build caches
|
||||||
|
SCANV 256 Verbose font file scanning information
|
||||||
|
MEMORY 512 Monitor fontconfig memory usage
|
||||||
|
CONFIG 1024 Monitor which config files are loaded
|
||||||
|
LANGSET 2048 Dump char sets used to construct lang values
|
||||||
|
MATCH2 4096 Display font-matching transformation in patterns
|
||||||
|
*/
|
||||||
|
#if defined(DEBUG) && defined(VERBOSE)
|
||||||
|
#define FC_DEBUG "1025"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable verbose logging if requested on platforms that support it.
|
* Enable verbose logging if requested on platforms that support it.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
src/fonts.c
10
src/fonts.c
|
|
@ -286,6 +286,16 @@ TuxPaint_Font *TuxPaint_Font_OpenFont(const char *pangodesc,
|
||||||
desc);
|
desc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
/*
|
||||||
|
* SDLPango_CreateContext_GivenFontDesc() defaults to ASCII character set
|
||||||
|
* (at least on the macOS) unless the CHARSET environment varaible is set.
|
||||||
|
* May also want to set on non-macOS platforms, also.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mysetenv("CHARSET", "UTF-8");
|
||||||
|
#endif
|
||||||
|
|
||||||
tpf->pango_context = SDLPango_CreateContext_GivenFontDesc(desc);
|
tpf->pango_context = SDLPango_CreateContext_GivenFontDesc(desc);
|
||||||
if (tpf->pango_context == NULL)
|
if (tpf->pango_context == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1064,7 +1064,7 @@ static void set_langint_from_locale_string(const char *restrict loc)
|
||||||
* @param name Variable to set
|
* @param name Variable to set
|
||||||
* @param value Value to set the variable to
|
* @param value Value to set the variable to
|
||||||
*/
|
*/
|
||||||
static void mysetenv(const char *name, const char *value)
|
void mysetenv(const char *name, const char *value)
|
||||||
{
|
{
|
||||||
#ifndef HAVE_SETENV
|
#ifndef HAVE_SETENV
|
||||||
int len;
|
int len;
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,7 @@ extern w_langs wished_langs[255];
|
||||||
int get_current_language(void);
|
int get_current_language(void);
|
||||||
int setup_i18n(const char *restrict lang, const char *restrict locale,
|
int setup_i18n(const char *restrict lang, const char *restrict locale,
|
||||||
int *ptr_num_wished_languages) MUST_CHECK;
|
int *ptr_num_wished_languages) MUST_CHECK;
|
||||||
|
void mysetenv(const char *name, const char *value);
|
||||||
|
|
||||||
#ifdef NO_SDLPANGO
|
#ifdef NO_SDLPANGO
|
||||||
int smash_i18n(void) MUST_CHECK;
|
int smash_i18n(void) MUST_CHECK;
|
||||||
|
|
|
||||||
|
|
@ -450,8 +450,12 @@ int iswprint(wchar_t wc)
|
||||||
#error "---------------------------------------------------"
|
#error "---------------------------------------------------"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
/* These are required to display pango debugging information later in this file */
|
||||||
|
#include <pango/pango.h>
|
||||||
|
#include <pango/pangoft2.h>
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* !defined(NO_SDLPANGO) */
|
||||||
|
|
||||||
#ifndef NOSOUND
|
#ifndef NOSOUND
|
||||||
|
|
||||||
|
|
@ -30999,6 +31003,13 @@ int main(int argc, char *argv[])
|
||||||
putenv((char *) "FONTCONFIG_PATH=Resources/etc");
|
putenv((char *) "FONTCONFIG_PATH=Resources/etc");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(FC_DEBUG)
|
||||||
|
/*
|
||||||
|
* Enable fontconfig debugging. See "debug.h"
|
||||||
|
*/
|
||||||
|
mysetenv("FC_DEBUG", FC_DEBUG);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FORKED_FONTS
|
#ifdef FORKED_FONTS
|
||||||
/* must start ASAP, but depends on locale which in turn needs the config */
|
/* must start ASAP, but depends on locale which in turn needs the config */
|
||||||
#ifdef NO_SDLPANGO
|
#ifdef NO_SDLPANGO
|
||||||
|
|
@ -31044,6 +31055,31 @@ int main(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG) && !defined(NO_SDLPANGO)
|
||||||
|
/* Confirm pango's character set */
|
||||||
|
if(1) {
|
||||||
|
const char* charset;
|
||||||
|
|
||||||
|
g_get_charset(&charset);
|
||||||
|
printf("pango charset: %s\n", charset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Display fonts available to pango */
|
||||||
|
if(1) {
|
||||||
|
PangoFontMap* fontmap;
|
||||||
|
PangoFontFamily** families;
|
||||||
|
int n_families;
|
||||||
|
|
||||||
|
fontmap = pango_ft2_font_map_new();
|
||||||
|
pango_font_map_list_families(fontmap, &families, &n_families);
|
||||||
|
|
||||||
|
for(int i=0; i < n_families; i++) {
|
||||||
|
const char* family_name = pango_font_family_get_name(families[i]);
|
||||||
|
|
||||||
|
printf("pango ft2 fontmap[%d] = '%s'\n", i, family_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
claim_to_be_ready();
|
claim_to_be_ready();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue