Open hagenbuch opened 11 months ago
Yep, everything's correct with this and as already discussed in #5 this should be addressed in the official package which is hosted on fpdf.org.
This repository is only made for cloning official tFPDF releases which are available at: http://fpdf.org/en/script/script92.php THERE WILL BE NO DEVELOPMENT IN THIS REPOSITORY!
IMHO the change in FPDF 1.86 should be added to tFPDF as well:
v1.86 (2023-06-25)
- Added a parameter to AddFont() to specify the directory where to load the font definition file.
IIRC there's also an issue in the temp-files because there are absolute paths in them, which makes it impossible to deploy them at all. A checksum of the original TTF could also help to keep the temp-files up to date.
As it took me quite a while to figure this out and the documentation seems to be gone, I'll try to summarize what I found:
tFPDF can use "built in" fonts, that is (to my understanding) whereever a PDF is going to be printed, there will be those fonts at minimum:
Courier, Helvetica (= Arial), Times, Symbol, Zapf Dingbats - including their bold and italics versions.
If you want other fonts, I would get them from Google Werbfont helper but you're fine with other fonts as long it's True Type - and remember that your particular glyphs (cyrillic, greek or the like) are included inside the TTF file if you want to print them!
You will have to place those font files as a True Type Font (.ttf) and only using small caps, no spaces in the filename inside a certain font folder. Usually, you need an extra file for bold and another one for italic letters. Where should that folder be placed?
If you install tFPDF via composer (as we should)
or even otherwise, a font folder
will be created, containing a subfolder "unifont"
However, for security reasons (vendor folder with PHP code not being directly reachable via a browser request) you should better be placing the "vendor" folder next to the "public" folder containing the web root - but that has nothing to do with tFPDF.
To put your own fonts inside the file tree "vendor" generated by composer is not such a great idea because if you delete that "vendor" folder without much thought in order to recreate it, your fonts will be gone.
Better set a custom font path in the PHP code, like
Then copy all the files from abovementioned default "font" folder here, then add your ttf file in the "unifont" folder inside "font", for example source-sans-3-v15-latin_latin-ext-regular.ttf
The "unifont" folder must contain the newest code file "ttfonts.php" from the software package, so remember to update that if composer updates the tftpd package!
My PDF generation code usually starts like this:
When tFPDF tries to access your TTF font for the first time, it has to calculate some metrics and produce special font files ending with .mtx.php , .cw.dat and .cw127.php - therefor the webserver must be able to write into that folder!
Also if you install a new version of a ttf file, delete the corresponding old files .mtx.php, .cw.dat and .cw127.php so they may get regenerated.