On Thu, 24 Jan 2019 12:37:31 +0530, Jay Aurabind wrote: > This begs the question, are there any FreeType Supported font formats > that can actually do granular weight rendering if requested by > fontconfig? As I understand it, what you really want to do is get a list of all the weights available for a particular family, and choose the next higher one from a given one? Fontconfig has no API for directly returning this, but it is easy enough to implement the function for yourself. Following is an example Python script that, given a font spec, finds all weights available for the best matching font family. For example, on my current system setup, family_weights palatino returns family 'P052' members [{'weight': 80, 'file': '/usr/share/fonts/type1/urw-base35/P052-Italic.t1'}, {'weight': 100, 'file': '/usr/share/fonts/type1/urw-base35/P052-Roman.t1'}, {'weight': 200, 'file': '/usr/share/fonts/type1/urw-base35/P052-Bold.t1'}, {'weight': 200, 'file': '/usr/share/fonts/type1/urw-base35/P052-BoldItalic.t1'}] Adapt as appropriate. ---- #!/usr/bin/python3 #+ # Find all weights for a given family. Invoke this script as follows: # # family_weights «font-spec» # # and it will return a list of all fonts with a common family name # matching «font-spec», in order of increasing weight. #- import sys import getopt import freetype2 as ft # <https://github.com/ldo/python_freetype> import fontconfig as fc # <https://github.com/ldo/python_fontconfig> from fontconfig import \ FC if len(sys.argv) != 2 : raise getopt.GetoptError("need exactly one arg, the Fontconfig pattern to match") #end if conf = fc.Config.get_current() pat = fc.Pattern.name_parse(sys.argv[1]) conf.substitute(pat, FC.MatchPattern) pat.default_substitute() family_name = None found = [] for entry in conf.font_sort(pat, trim = False, want_coverage = False)[0] : this_family = entry.get(FC.FAMILY, 0)[0] if family_name == None or this_family == family_name : if family_name == None : family_name = this_family #end if found.append({"weight" : entry.get(FC.WEIGHT, 0)[0], "file" : entry.get(FC.FILE, 0)[0]}) #end if #end for found = sorted(found, key = lambda x : x["weight"]) sys.stdout.write("family %s members %s\n" % (repr(family_name), repr(found))) _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/fontconfig