So, I am getting UI development in Android and as I started reading TextView attributes, I found an attribute called typeface. I then searched the technical differences between a font and a typeface my understanding boils down to this:

Typeface(or a font-family) is defined by a set of symbols(or glpyhs) having a defined meaning and fundamentally typefaces differ in the unique shape/design of the glyphs it will have.

Whereas, a Font(for a typeface or font-family) is a very specific set of symbols that have certain attributes on top of the typeface characteristics.


Now, I think I fairly understand the differences between the two but what confused me is the following:

  • Since Bold, Italic are Font styles, they apply to a font, are they also TypeFace modifiers? I mean, is it possible for a typeface to have a font attribute?
  • The attribute I mentioned has (normal, sans, serif, monospace) provided as possible values. Is Monospace or a serif a typeface attribute and only applied at Typeface level. So for example, I cannot change Times New Roman typeface to be a sans-serif without changing the entire typeface. But applying a font-style doesn't seem to change the entire typeface.

Is there a concept like font-only modifiers/attributes and typeface-only modifiers and I cannot apply one to the other?

1 Answer 1


A "Font" is the software that displays a "typeface". A font is always a typeface, but a typeface does not always have a font. (I'm kind of ignoring icon fonts since they aren't typefaces really, they are a special font classification.)

Bold, Italic, Condensed, Compressed, Extended, Book, Medium, Heavy, Black, etc. are Faces of the same Typeface Family (or font family). In terms of CSS, these faces are called "styles". Faces are sub-sets of the master typeface family.

So, Font is to Typeface as Style is to Face.

Not all typeface families have the same faces. Some typefaces don't have an italic face, although rare. Some call the italic face "Oblique". Some don't have a "heavy" face, etc.

Things like serif, sans-serif, slab, monospace are Typeface Family attributes or characteristics. They are not Face attributes. A serif family does not contain san-serif faces. If the family is a serif family, then it is customary for every face to also contain that family characteristic. Again, a face is merely a sub-set of the family.

Changing a typeface family's face (or style) does not change the typeface family. If you want a sans-serif typeface (or font) you need to choose a family that has that characteristic. Changing Times New Roman to Helvetica, changes the family from a serif family to a sans-serif family. This is how you change characteristics such as serif, monospace, slab, etc.

An analogy... think of a font like a burrito... it always has the tortilla wrapper. That wrapper can be corn or flour. What is inside the tortilla can be any number of things from beef, chicken, beans, cheese, etc. A typeface (or font) is the tortilla, a face (or style) is the interior ingredient. You can't change a flour tortilla to a corn tortilla merely by putting different ingredients inside the burrito. You can only change the tortilla by actually changing the tortilla.

Your question seems to be asking, "How do I change a type family by merely setting a different face?" That is simply not how typefaces or fonts work. Families only change when you change them.

  • Understood! You know it gets confusing when the blogs and "experts" don't specify these details. I read an experts blog and they didn't call font as a software file and there is no discussion of a "face" at all!!!. Although one thing that's true and what everyone says is that a Font is synonymous with a TypeFace as you mentioned. And Android's TypeFace attribute can take a value of "monospace". I find it surprising that you can change a type's face to/from monospace, serif, etc. Anyway, Thank You for the answer. Commented May 14, 2017 at 17:41
  • @pulp_fiction I'm not an Android developer, but guessing.... the characteristic of a monospaced family is that its, well, mono spaced. Every glyph takes up the same amount of horizontal space. So it's not unimaginable that Android would offer some mechanism to apply equal spacing to every glyph in any family because the actual glyphs don't change. This would, however, be a variation on how typography traditionally works, or at the very least a variation on the standard definition and application of "monospace".
    – Scott
    Commented May 14, 2017 at 17:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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