mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-08-11 09:13:57 -04:00
Moved fonts access to new resource API
This commit is contained in:
parent
f9ff180347
commit
9bd19f734e
BIN
resources/fonts/liberation/LiberationMono-Bold.ttf
Normal file
BIN
resources/fonts/liberation/LiberationMono-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationMono-BoldItalic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationMono-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationMono-Italic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationMono-Italic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationMono-Regular.ttf
Normal file
BIN
resources/fonts/liberation/LiberationMono-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSans-Bold.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSans-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSans-BoldItalic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSans-Italic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSans-Italic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSans-Regular.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSans-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSerif-Bold.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSerif-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSerif-BoldItalic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSerif-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSerif-Italic.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSerif-Italic.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/liberation/LiberationSerif-Regular.ttf
Normal file
BIN
resources/fonts/liberation/LiberationSerif-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/prs500/tt0003m_.ttf
Normal file
BIN
resources/fonts/prs500/tt0003m_.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/prs500/tt0011m_.ttf
Normal file
BIN
resources/fonts/prs500/tt0011m_.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/prs500/tt0419m_.ttf
Normal file
BIN
resources/fonts/prs500/tt0419m_.ttf
Normal file
Binary file not shown.
@ -403,16 +403,15 @@ def prepare_string_for_xml(raw, attribute=False):
|
|||||||
return raw
|
return raw
|
||||||
|
|
||||||
if isosx:
|
if isosx:
|
||||||
|
import glob, shutil
|
||||||
fdir = os.path.expanduser('~/.fonts')
|
fdir = os.path.expanduser('~/.fonts')
|
||||||
try:
|
try:
|
||||||
if not os.path.exists(fdir):
|
if not os.path.exists(fdir):
|
||||||
os.makedirs(fdir)
|
os.makedirs(fdir)
|
||||||
if not os.path.exists(os.path.join(fdir, 'LiberationSans_Regular.ttf')):
|
if not os.path.exists(os.path.join(fdir, 'LiberationSans_Regular.ttf')):
|
||||||
from calibre.ebooks.lrf.fonts.liberation import __all__ as fonts
|
base = P('fonts/liberation/*.ttf')
|
||||||
for font in fonts:
|
for f in glob.glob(base):
|
||||||
l = {}
|
shutil.copy2(f, fdir)
|
||||||
exec 'from calibre.ebooks.lrf.fonts.liberation.'+font+' import font_data' in l
|
|
||||||
open(os.path.join(fdir, font+'.ttf'), 'wb').write(l['font_data'])
|
|
||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
import os
|
import os
|
||||||
from calibre.ptempfile import PersistentTemporaryFile
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from PIL import ImageFont
|
from PIL import ImageFont
|
||||||
@ -22,52 +21,40 @@ FONT_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LIBERATION_FONT_MAP = {
|
LIBERATION_FONT_MAP = {
|
||||||
'Swis721 BT Roman' : 'LiberationSans_Regular',
|
'Swis721 BT Roman' : 'LiberationSans-Regular',
|
||||||
'Dutch801 Rm BT Roman' : 'LiberationSerif_Regular',
|
'Dutch801 Rm BT Roman' : 'LiberationSerif-Regular',
|
||||||
'Courier10 BT Roman' : 'LiberationMono_Regular',
|
'Courier10 BT Roman' : 'LiberationMono-Regular',
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSTEM_FONT_MAP = {}
|
|
||||||
for key, val in LIBERATION_FONT_MAP.items():
|
|
||||||
SYSTEM_FONT_MAP[key] = SYSTEM_FONT_PATH + val.replace('_', '-') + '.ttf'
|
|
||||||
|
|
||||||
FONT_FILE_MAP = {}
|
FONT_FILE_MAP = {}
|
||||||
|
|
||||||
|
SYSTEM_FONT_MAP = {}
|
||||||
|
for key, val in LIBERATION_FONT_MAP.items():
|
||||||
|
SYSTEM_FONT_MAP[key] = SYSTEM_FONT_PATH + val + '.ttf'
|
||||||
|
|
||||||
def get_font_path(name):
|
def get_font_path(name):
|
||||||
if FONT_FILE_MAP.has_key(name) and os.access(FONT_FILE_MAP[name].name, os.R_OK):
|
if FONT_FILE_MAP.has_key(name) and os.access(FONT_FILE_MAP[name], os.R_OK):
|
||||||
return FONT_FILE_MAP[name].name
|
return FONT_FILE_MAP[name]
|
||||||
|
|
||||||
# translate font into file name
|
# translate font into file name
|
||||||
fname = FONT_MAP[name]
|
for m, s in ((FONT_MAP, 'prs500'), (LIBERATION_FONT_MAP, 'liberation')):
|
||||||
|
fname = m[name]+'.ttf'
|
||||||
|
|
||||||
# first, check configuration in /etc/
|
# first, check configuration in /etc/
|
||||||
etc_file = os.path.join(os.path.sep, 'etc', 'calibre', 'fonts', fname + '.ttf')
|
etc_file = os.path.join(os.path.sep, 'etc', 'calibre', 'fonts', fname)
|
||||||
if os.access(etc_file, os.R_OK):
|
if os.access(etc_file, os.R_OK):
|
||||||
return etc_file
|
return etc_file
|
||||||
|
|
||||||
# then, try calibre shipped ones
|
# then, try calibre shipped ones
|
||||||
try:
|
f = P('fonts/%s/%s'%(s,fname))
|
||||||
try:
|
if os.path.exists(f):
|
||||||
font_mod = __import__('calibre.ebooks.lrf.fonts.prs500', {}, {},
|
return f
|
||||||
[fname], -1)
|
|
||||||
getattr(font_mod, fname)
|
|
||||||
except (ImportError, AttributeError):
|
|
||||||
font_mod = __import__('calibre.ebooks.lrf.fonts.liberation', {}, {},
|
|
||||||
[LIBERATION_FONT_MAP[name]], -1)
|
|
||||||
p = PersistentTemporaryFile('.ttf', 'font_')
|
|
||||||
p.write(getattr(font_mod, fname).font_data)
|
|
||||||
p.close()
|
|
||||||
FONT_FILE_MAP[name] = p
|
|
||||||
return p.name
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# finally, try system default ones
|
# finally, try system default ones
|
||||||
if SYSTEM_FONT_MAP.has_key(name) and os.access(SYSTEM_FONT_MAP[name], os.R_OK):
|
if SYSTEM_FONT_MAP.has_key(name) and os.access(SYSTEM_FONT_MAP[name], os.R_OK):
|
||||||
return SYSTEM_FONT_MAP[name]
|
return SYSTEM_FONT_MAP[name]
|
||||||
|
|
||||||
# not found
|
# not found
|
||||||
raise SystemError, 'font %s (in file %s) not installed' % (name, fname)
|
raise SystemError('font %s (in file %s) not installed' % (name, fname))
|
||||||
|
|
||||||
def get_font(name, size, encoding='unic'):
|
def get_font(name, size, encoding='unic'):
|
||||||
'''
|
'''
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,5 +0,0 @@
|
|||||||
__all__ = ['LiberationMono_Bold', 'LiberationMono_Regular', 'LiberationSans_Bold',
|
|
||||||
'LiberationSans_Regular', 'LiberationSerif_Bold', 'LiberationSerif_Regular',
|
|
||||||
'LiberationMono_BoldItalic', 'LiberationMono_Italic',
|
|
||||||
'LiberationSans_BoldItalic', 'LiberationSans_Italic',
|
|
||||||
'LiberationSerif_BoldItalic', 'LiberationSerif_Italic']
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
import collections, itertools
|
import collections, itertools, glob
|
||||||
|
|
||||||
from PyQt4.QtCore import Qt, QByteArray, SIGNAL
|
from PyQt4.QtCore import Qt, QByteArray, SIGNAL
|
||||||
from PyQt4.QtGui import QGraphicsRectItem, QGraphicsScene, QPen, \
|
from PyQt4.QtGui import QGraphicsRectItem, QGraphicsScene, QPen, \
|
||||||
@ -410,30 +410,9 @@ class Document(QGraphicsScene):
|
|||||||
font_map[font] = [str(i) for i in QFontDatabase.applicationFontFamilies(id)][0]
|
font_map[font] = [str(i) for i in QFontDatabase.applicationFontFamilies(id)][0]
|
||||||
|
|
||||||
if load_substitutions:
|
if load_substitutions:
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_BoldItalic
|
base = P('fonts/liberation/*.ttf')
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_BoldItalic.font_data))
|
for f in glob.glob(base):
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Italic
|
QFontDatabase.addApplicationFont(f)
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_BoldItalic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_BoldItalic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Regular.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Italic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Regular.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Italic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_BoldItalic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_BoldItalic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Regular.font_data))
|
|
||||||
|
|
||||||
self.font_loader = FontLoader(font_map, self.dpi)
|
self.font_loader = FontLoader(font_map, self.dpi)
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
'''
|
'''
|
||||||
'''
|
'''
|
||||||
import os, math, re
|
import os, math, re, glob
|
||||||
from PyQt4.Qt import QWidget, QSize, QSizePolicy, QUrl, SIGNAL, Qt, QTimer, \
|
from PyQt4.Qt import QWidget, QSize, QSizePolicy, QUrl, SIGNAL, Qt, QTimer, \
|
||||||
QPainter, QPalette, QBrush, QFontDatabase, QDialog, \
|
QPainter, QPalette, QBrush, QFontDatabase, QDialog, \
|
||||||
QByteArray, QColor, QPoint, QImage, QRegion, \
|
QColor, QPoint, QImage, QRegion, \
|
||||||
QFont, QObject, QApplication, pyqtSignature
|
QFont, QObject, QApplication, pyqtSignature
|
||||||
from PyQt4.QtWebKit import QWebPage, QWebView, QWebSettings
|
from PyQt4.QtWebKit import QWebPage, QWebView, QWebSettings
|
||||||
|
|
||||||
@ -20,32 +20,9 @@ from calibre.constants import iswindows
|
|||||||
from calibre import prints
|
from calibre import prints
|
||||||
|
|
||||||
def load_builtin_fonts():
|
def load_builtin_fonts():
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_BoldItalic
|
base = P('fonts/liberation/*.ttf')
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_BoldItalic.font_data))
|
for f in glob.glob(base):
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Italic
|
QFontDatabase.addApplicationFont(f)
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_BoldItalic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_BoldItalic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Regular.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Italic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Regular.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_Italic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_Italic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationMono_Bold
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationMono_Bold.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSerif_BoldItalic
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSerif_BoldItalic.font_data))
|
|
||||||
from calibre.ebooks.lrf.fonts.liberation import LiberationSans_Regular
|
|
||||||
QFontDatabase.addApplicationFontFromData(QByteArray(LiberationSans_Regular.font_data))
|
|
||||||
#for f in QFontDatabase().families():
|
|
||||||
# print f
|
|
||||||
return 'Liberation Serif', 'Liberation Sans', 'Liberation Mono'
|
return 'Liberation Serif', 'Liberation Sans', 'Liberation Mono'
|
||||||
|
|
||||||
def config(defaults=None):
|
def config(defaults=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user