mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
Merge pull request #5518 from icebreakerone/master
Select the correct font variant where there are options in social plugin
This commit is contained in:
commit
0f4aed3d57
@ -28,7 +28,6 @@ import requests
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from glob import glob
|
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from mkdocs.commands.build import DuplicateFilter
|
from mkdocs.commands.build import DuplicateFilter
|
||||||
@ -449,19 +448,31 @@ class SocialPlugin(BasePlugin[SocialPluginConfig]):
|
|||||||
else:
|
else:
|
||||||
name = "Roboto"
|
name = "Roboto"
|
||||||
|
|
||||||
# Retrieve font files, if not already done
|
# Google fonts can return varients like OpenSans_Condensed-Regular.ttf so
|
||||||
files = glob(f"{self.cache}/**/*.[ot]tf")
|
# we only use the font requested e.g. OpenSans-Regular.ttf
|
||||||
files = [os.path.relpath(file, self.cache) for file in files]
|
font_filename_base = name.replace(' ', '')
|
||||||
files = [file for file in files if file.endswith(".ttf") or file.endswith(".otf")] or (
|
filename_regex = re.escape(font_filename_base)+r"-(\w+)\.[ot]tf$"
|
||||||
self._load_font_from_google(name)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Map available font weights to file paths
|
|
||||||
font = dict()
|
font = dict()
|
||||||
for file in files:
|
# Check for cached files - note these may be in subfolders
|
||||||
match = re.search(r"-(\w+)\.[ot]tf$", file)
|
for currentpath, folders, files in os.walk(self.cache):
|
||||||
if match:
|
for file in files:
|
||||||
font[match.group(1)] = os.path.join(self.cache, file)
|
# Map available font weights to file paths
|
||||||
|
fname = os.path.join(currentpath, file)
|
||||||
|
match = re.search(filename_regex, fname)
|
||||||
|
if match:
|
||||||
|
font[match.group(1)] = fname
|
||||||
|
|
||||||
|
# If none found, fetch from Google and try again
|
||||||
|
if len(font) == 0:
|
||||||
|
self._load_font_from_google(name)
|
||||||
|
for currentpath, folders, files in os.walk(self.cache):
|
||||||
|
for file in files:
|
||||||
|
# Map available font weights to file paths
|
||||||
|
fname = os.path.join(currentpath, file)
|
||||||
|
match = re.search(filename_regex, fname)
|
||||||
|
if match:
|
||||||
|
font[match.group(1)] = fname
|
||||||
|
|
||||||
# Return available font weights with fallback
|
# Return available font weights with fallback
|
||||||
return defaultdict(lambda: font["Regular"], font)
|
return defaultdict(lambda: font["Regular"], font)
|
||||||
|
@ -28,7 +28,6 @@ import requests
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from glob import glob
|
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from mkdocs.commands.build import DuplicateFilter
|
from mkdocs.commands.build import DuplicateFilter
|
||||||
@ -449,19 +448,31 @@ class SocialPlugin(BasePlugin[SocialPluginConfig]):
|
|||||||
else:
|
else:
|
||||||
name = "Roboto"
|
name = "Roboto"
|
||||||
|
|
||||||
# Retrieve font files, if not already done
|
# Google fonts can return varients like OpenSans_Condensed-Regular.ttf so
|
||||||
files = glob(f"{self.cache}/**/*.[ot]tf")
|
# we only use the font requested e.g. OpenSans-Regular.ttf
|
||||||
files = [os.path.relpath(file, self.cache) for file in files]
|
font_filename_base = name.replace(' ', '')
|
||||||
files = [file for file in files if file.endswith(".ttf") or file.endswith(".otf")] or (
|
filename_regex = re.escape(font_filename_base)+r"-(\w+)\.[ot]tf$"
|
||||||
self._load_font_from_google(name)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Map available font weights to file paths
|
|
||||||
font = dict()
|
font = dict()
|
||||||
for file in files:
|
# Check for cached files - note these may be in subfolders
|
||||||
match = re.search(r"-(\w+)\.[ot]tf$", file)
|
for currentpath, folders, files in os.walk(self.cache):
|
||||||
if match:
|
for file in files:
|
||||||
font[match.group(1)] = os.path.join(self.cache, file)
|
# Map available font weights to file paths
|
||||||
|
fname = os.path.join(currentpath, file)
|
||||||
|
match = re.search(filename_regex, fname)
|
||||||
|
if match:
|
||||||
|
font[match.group(1)] = fname
|
||||||
|
|
||||||
|
# If none found, fetch from Google and try again
|
||||||
|
if len(font) == 0:
|
||||||
|
self._load_font_from_google(name)
|
||||||
|
for currentpath, folders, files in os.walk(self.cache):
|
||||||
|
for file in files:
|
||||||
|
# Map available font weights to file paths
|
||||||
|
fname = os.path.join(currentpath, file)
|
||||||
|
match = re.search(filename_regex, fname)
|
||||||
|
if match:
|
||||||
|
font[match.group(1)] = fname
|
||||||
|
|
||||||
# Return available font weights with fallback
|
# Return available font weights with fallback
|
||||||
return defaultdict(lambda: font["Regular"], font)
|
return defaultdict(lambda: font["Regular"], font)
|
||||||
|
Loading…
Reference in New Issue
Block a user