I understand that one should (?) be using UNICODE for html. But using this with tex4ht, always makes "ff" look strange. Why does this happen for "ff"? and based on this test below, should one instead use iso-8859-1 encoding when using htlatex to generate HTML from Latex, or may be I am not using the correct combination of options?

Given this latex file

\title{Kamke differential equations}

Here are 5 different htlatex commands: 3 used utf8, one does not use any encoding (default), and finally one uses iso-8859-1. The iso option generated the best result. This is on windows using firefox.

enter image description here



using texlive 2012 debian to compile latex files.


Result using provided test below is shown in this image. It shows a problem.

I've put the zip file which contains all output and the HTML file in this folder


I am using firefox 20, windows 7

enter image description here

  • Sorry it's not really possible to say anything given this amount of information. HTML like LaTeX can use UTF-8 or ISO-8859-1 or several other encodings but the encoding declared has to match the encoding used otherwise you get rubbish in the output. For HTML the main place to specify encoding is in the HTTP headers or failing that in a <meta... charset=... meta element in the head. Jun 16, 2013 at 9:48
  • @DavidCarlisle what other information would you like me to show in the above? The HTML header generated for the above cases? I am simply trying to find out which option I should be using.
    – Nasser
    Jun 16, 2013 at 9:52
  • related: en.wikipedia.org/wiki/Typographic_ligature
    – matth
    Jun 16, 2013 at 9:59
  • 4
    If I use htlatex aa11.tex "htm,uni-html4" " -cunihtf-utf8" The generated htm(l) file is declared as utf8, but in all cases ff is encoded (and rendered correctly) as ff Can you put a sample that renders incorrectly on a web site somewhere so it shows what encoding you declare in the http headers Jun 16, 2013 at 10:07

1 Answer 1


As to the “why” question, what is happening here is that under some circumstances the letter pair “ff” is replaced by “ff” LATIN SMALL LIGATURE FF U+FB00, which is understandable in a sense, but then things go wrong.

In cases 3 and 4, the character is presumably written correctly in the HTML document, but the font being used does not contain it, so the browser picks up a glyph from a backup font. The probably depends on font settings, which were not disclosed in the question.

In case 2, the character is written as UTF-8 encoded, bytes 0xEF 0xAC 0x80, but then these bytes get interpreted according to windows-1252, yielding “ff”. The reason is that the character encoding has been declared incorrectly, or maybe not at all, forcing browsers to guess, and they may guess wrong.

Using U+FB00 is understandable but questionable. Such characters used to be the only way to use ligatures in HTML document, but they only work when the font used contains them. Nowadays you can use font-feature-settings in CSS, and although they are still relatively poorly supported (in fonts and in browsers), they are safe in the sense that when they fail, e.g. “ff” gets displayed just as “ff”, not in a fancy incorrect way.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.