[XeTeX] Checking if a font exists

Khaled Hosny khaledhosny at eglug.org
Mon Aug 30 01:02:59 CEST 2010


On Sun, Aug 29, 2010 at 12:17:38PM -0400, Alan Munn wrote:
> Is there a way to check whether a font is present in a user's
> system?  I need to generate a document with Myriad Pro if it exists,
> Arial otherwise, and if neither, exit with an error.
> 
> I couldn't find anything in either the fontspec and xetex documentation.

I don't have a xetex answer, sorry, but I find it interesting, so I
tried something luatexy, just in case some one else is interested. It
should be self explanatory:

\input luaotfload.sty
\directlua {
  local name = 'Latin Modern Roman' % should be found
% local name = 'cmr10' % tfm font
% local name = 'foobar' % non-existent font
  local spec = fonts.define.analyze(name)
  local file = fonts.names.resolve(spec)

  % if the font is not found the asked name is returned
  if file == name then
    % it can be a tfm font, just in case
    local tfm = kpse.find_file(file, "ofm")
    if tfm then
      tex.sprint("font is found and is a tfm font")
    else
      tex.sprint("font not found")
    end
  else
    tex.sprint("font is found")
  end
}

\bye

Regards,
 Khaled

-- 
 Khaled Hosny
 Arabic localiser and member of Arabeyes.org team
 Free font developer


More information about the XeTeX mailing list