[HN Gopher] Let's fix font size
___________________________________________________________________
 
Let's fix font size
 
Author : rhabarba
Score  : 432 points
Date   : 2021-03-30 10:59 UTC (12 hours ago)
 
web link (tonsky.me)
w3m dump (tonsky.me)
 
| belinder wrote:
| Not sure if capital letter size would catch scenarios with little
| circly swirls that make other characters taller than capital
| letter characters
 
| [deleted]
 
| jamesu wrote:
| Font metrics are a pain. A while back I was working on trying to
| reliably reproduce the behaviour you get from the win32 font api
| using stb_truetype, but due to time constraints I just ended up
| having to manually tweak font sizes to match.
 
| tomgp wrote:
| Just look at those to two images with all the "Andy"s: In the
| first the words all have similar visual weight, none stand out or
| take up considerably more or less space. In the second image
| where all the cap heights are the same some fonts make the word
| look huge (courier new) others tiny (victor mono). That to me is
| a clear illustration of why this proposal is not going anywhere.
 
| JxLS-cpgbe0 wrote:
| What's the x-height of z[?][?][?][?][?][?][?][?][?][?][?][?][?][?
| ][?][?][?][?][?][?][?][?][?][?][?][?][?][?][?][?][?][?]?
 
  | forty wrote:
  | Interesting character :) what is it?
 
    | jfk13 wrote:
    | It's just a "z" with a ton of combining diacritics. Which is
    | entirely irrelevant. x-height is a dimension of the font,
    | it's nothing to do with an individual character. (In most
    | Latin fonts, it'll match the height of the "x" glyph, but
    | that's not a hard and fast rule.)
 
    | zarq wrote:
    | Capital Za[?]l[?]g[?][?][?]o[?][?][?]
 
| andjd wrote:
| >I see no reason to honor the so-called "default line-height".
| It's basically a font designer's personal preference, imposed on
| every user of the font in every viewing condition.
| 
| Erm... To a large extent, these details of a font _are_ the the
| designer's -personal-preference- professional judgement, and
| that's the point. We use different fonts because they have a
| distinct feel or quality, and how much spacing they have between
| lines is one of the many little details that add up to the
| gestalt of a font. If you don't like the line spacing of a font,
| don't use it. Or tweak it if you like. But don't pretend that
| declaring that all fonts should have a line spacing of 200% of
| their cap height isn't similarly trying to impose your personal
| aesthetic preferences on everyone else as well.
 
| jahewson wrote:
| This has basically always been the case for typography. The point
| size of physical type refers to the height of the slugs, not the
| letters on them. You can't just grab two 12pt fonts and expect
| them to be exactly the same size.
| 
| The standard solution is to use x-height, rather than cap-height
| and I agree that it would be nice to be able to select a font
| based on that instead of the em-size (font size).
| 
| Line height on the web is indeed broken, as it's measured from
| the center of the em-box and I agree it would be nice to be able
| to specify baseline distances instead but the catch there is that
| you really need to know the content of the text being typeset, as
| soon as you start adding words with diacritics (AAA) your lines
| collide.
 
| ska wrote:
| > It's basically a font designer's personal preference, imposed
| on every user of the font in every viewing condition.
| 
| Buried the lede here; but "personal preference" is really design.
| Article perhaps should be retitled "I don't like typographic
| design because it forces UI element to adjust to typographic
| spacing rather than the other way around". Clearly you can make
| arguments for both being the "right" way.
 
| globular-toast wrote:
| > The solution > Specify it in pixels.
| 
| No, no, no... I don't understand why the author would suggest
| specifying in pixels. We know pixel size varies widely between
| different displays. This means we need stupid hacks like having a
| multiplier to convert from specified pixels to _actual_ pixels.
| So why pretend it 's specifying pixels in the first place?
| 
| It's always annoyed me that DPI is not expected to be set
| correctly. All monitors should come with a DPI value that you set
| in your OS. Of course, a user is free to add some kind of
| multiplier on top of that (to account for variation in sight and
| preference), but the baseline would be standard.
 
| danShumway wrote:
| > Specify it in pixels
| 
| No thank you.
| 
| I regularly wonder if it might not be better for the web if we
| got rid of pixels as a unit entirely. We can't realistically do
| that for a lot of reasons, and there are legitimate reasons to
| use pixels _sometimes_ , but resolution independent font-size and
| container sizing should be the default. If you are using pixels
| on the web for font sizes, consider this a public intervention
| that you need to stop.
| 
| The fact that `em` units are not related to physical size
| attributes _is intended_. We don 't want them to be related to
| physical size -- what `2em` is saying is that you want a piece of
| text to be twice as large as the "default" size of the specific
| font on the platform/device. That is a superior way to think
| about text size, because as a user I don't want you to try and
| figure out what the pixel density or screen ratio or resolution
| of my device is.
| 
| Size your fonts with `em` and `rem` units, and size your
| containers based on the number of characters you want to fit in
| each line. Don't use pixels. It doesn't matter if your fonts are
| bigger on Mac or Windows. It is intentional that platforms can
| size their fonts differently, and your interface designs should
| take that into account.
| 
| If anything, native platforms should be moving more in this
| direction, they should not be moving away from it. There was a
| period where you could decide to only care about responsive
| design on the web, but increasingly you should be thinking about
| responsive design on native platforms too. And resolution-
| independent font-sizes based on the user/platform are part of
| that process.
| 
|  _EDIT: Yes, I 'm aware that pixels on the web are not
| necessarily 1:1 ratios with physical pixels on a screen. That
| doesn't change anything, pixels are still bad to use on the web.
| Tying font size to resolution, whether that's browser window
| resolution or physical resolution, is still equally problematic.
| And it certainly doesn't mean that we should move in the opposite
| direction on native devices -- the web's pixels are the way they
| are because the alternative, being tied to literal physical
| pixels, would be even worse._
 
  | joshuak wrote:
  | I strongly disagree with this general philosophy. One should be
  | able to use an absolute, non-relativistic unit of measure that
  | requires no external knowledge at all. Not even to other parts
  | of the same layout.
  | 
  | Relativistic units are inadequate if they are free to cause
  | non-pixel perfect transformations of designers intent from
  | platform to platform. It is no more reasonable to re-layout a
  | carefully designed UI then it is to reposition objects and
  | people in a movie scene played on devices of different
  | resolution, in fact it is much less reasonable.
  | 
  | Perhaps, in some circumstances this will call for platform
  | specific design, and that is correct and appropriate. Perhaps a
  | UI will look like a postage stamp on a high pixel density
  | display. Adjusting for that difference is the domain of the
  | operating system and the user. Even the OS may be unaware of
  | the actual physical size of the display, for example when using
  | a projector.
  | 
  | Automatic layout is a convenance, but it works against not for
  | good design.
 
  | CharlesW wrote:
  | > _...there are legitimate reasons to use pixels sometimes, but
  | resolution independent font-size and container sizing should be
  | the default._
  | 
  | Web pixels are different than device pixels, and are resolution
  | independent.
 
    | danShumway wrote:
    | Yes, correct, I should have been more specific.
    | 
    | The resolution of the webpage as reported by the webpage,
    | even if it doesn't line up with the literal number of pixels
    | in a screen, should not be used for font sizing in most
    | scenarios.
 
    | kevincox wrote:
    | The are independent of the screen but also of the user
    | preferences. Using rem or relative sizes bases your sizing
    | off of the user's selected font size. As soon as you size
    | something in px you have just thrown away the user's font
    | size choice.
 
      | charrondev wrote:
      | This doesn't seem accurate. Items sized in pixels will get
      | increased with CTRL + "+".
 
        | kevincox wrote:
        | I believe that that zoom is handled differently from
        | default font size.
 
  | djrenren wrote:
  | Hey just a heads up, on the web (or at least in CSS) px is
  | resolution independent. It represents 1/96th of an inch [1].
  | 
  | The web has physical, font-relative, and viewport-relative
  | lengths which all serve slightly different purposes. Like you,
  | I find font-relative to be super useful much of the time, but
  | the others have their place as well. I just want to point out
  | that CSS specifically doesn't have a resolution-dependent
  | measurement.
  | 
  | Using pixel (1/96 in) sizes for a font is fine if you care
  | about the physical size of the font being displayed. Starting
  | from the system default font-size as you suggest will also
  | work, but you'll need to test it on all the platforms
  | (especially if you use a custom font).
  | 
  | [1]: https://www.w3.org/TR/css-values-4/#absolute-lengths
 
    | danShumway wrote:
    | Yes, completely correct, and it's good that you pointed that
    | out.
    | 
    | However, you also shouldn't be sizing fonts based on 1/96th
    | of an inch units. That will also break responsive design in
    | many cases. Not all of them, like you said there are
    | legitimate use-cases, but most of the time you should not be
    | trying to make a font be a specific physical size.
 
  | jstimpfle wrote:
  | > Size your fonts with `em` and `rem` units, and size your
  | containers based on the number of characters you want to fit in
  | each line.
  | 
  | AFAIK this is not a good solution in most situations. The
  | number of characters that you can fit on a _fixed_ container
  | varies greatly depending on platform  / font / settings. By
  | consequence, you'd lose a whole lot of control over you layout
  | if you were to scale the containers in this way.
 
    | danShumway wrote:
    | I realize this is going to come off as dismissive, but don't
    | use fixed container widths.
    | 
    | Responsive design is a paradigm shift away from perfect
    | pixel-level control over every container size on a static-
    | width document. It's not print design, it's a different
    | medium.
    | 
    | Stop making fixed layouts that break whenever I snap a window
    | at half-width to the side of my screen; there are legitimate
    | reasons why someone on a computer might want their fonts to
    | be bigger or smaller, and your column widths should adjust to
    | accommodate that.
 
      | [deleted]
 
  | [deleted]
 
  | jancsika wrote:
  | Essentially, you've made svg text a special case. So diagram-
  | based languages and frankly any graph-drawing framework that
  | let you specify text labels go out the window.
  | 
  | I think svg `` was meant to be the answer to this
  | question, but that was an answer for people who don't care
  | about readability. So now it is rightly deprecated.
  | 
  | Unfortunately, that leaves essentially no answer except
  | guessing and checking with pixel-sized fonts to make sure font-
  | rendering-stack development troglodytes haven't screwed up my
  | diagrams.
  | 
  | So don't touch my pixel sizes, bro.
 
    | jancsika wrote:
    | In fact, I think I'm underselling it. Because I think the
    | gaming industry essentially says, "fuck it," to this same
    | problem and simply uses images for the text.
    | 
    | Am I right, gaming industry?
 
      | danShumway wrote:
      | The gaming industry isn't doing responsive design. For
      | multiple reasons, some legitimate and some not, but the
      | point is that I would consider them to be a separate
      | category.
      | 
      | Most games on the web are going to be using Canvas I
      | suspect -- in my experience at least, they usually won't be
      | rendering to the DOM or using CSS at all.
 
    | danShumway wrote:
    | > Essentially, you've made svg text a special case. So
    | diagram-based languages and frankly any graph-drawing
    | framework that let you specify text labels go out the window.
    | 
    | Hear me out on this: a graphics format that is specifically
    | designed to scale losslessly as it's _biggest_ selling point,
    | should have support for scaling `em` units.
    | 
    | It's absurd that building responsive SVGs is currently harder
    | than building responsive web pages. Instead it's got some
    | kind of messed up, obtuse system where we either do viewport
    | scaling and break all of our line-widths, or do percentage-
    | based scaling and break all of our custom paths.
 
  | akersten wrote:
  | Absolutely agreed. The article laments things like "I have no
  | good way of knowing how big my text is going to be when I say
  | 16pt," and my response is "why would you ever need to know
  | that? Do your containing elements not reasonably resize when
  | their inner content gets bigger? How are you handling
  | internationalization where strings will certainly be longer?"
  | 
  | It's ok for apps to look different on different platforms. We
  | need to stop trying to design things pixel-perfect to the
  | mockups - I thought we could have left that trend behind in the
  | early 2000's.
  | 
  | OS font rendering can even provide info about the physical
  | dimensions of the screen and give you an "actual size" unit you
  | can use to match your screen to real world paper. So a lot of
  | this article, to me, reads as a misunderstanding of why fonts
  | render the way they do.
 
    | egwor wrote:
    | If I have two monitors with two resolutions and I put the two
    | screens together the text is a different size. When I'm
    | reading the text I want it to be consistent as I move it
    | across screens. With this approach will the text be the same
    | size?
    | 
    | The main issue I have as I get older is that as the
    | resolution increases the text size seems to get smaller
 
      | jfk13 wrote:
      | > The main issue I have as I get older is that as the
      | resolution increases the text size seems to get smaller
      | 
      | Most operating systems provide options for you to address
      | that, by adjusting a scaling factor used by the display
      | system.
 
      | danShumway wrote:
      | This is exactly the problem that I'm getting at. The reason
      | your font is getting smaller with higher pixel densities is
      | because the font size is being tied to the pixel density.
      | 
      | In a better native world, your font size would be
      | completely unrelated from the monitor(s) you're using. It
      | is the attempt to tie font sizes to physical attributes of
      | your monitors like their resolution that is giving you this
      | problem. And it is the need for scaling to be based on
      | resolution that makes multi-resolution monitor setups
      | break.
      | 
      | There's no reason why your OS couldn't size text
      | differently on each monitor based on monitor-specific
      | settings that you control, and there's no reason why the
      | applications you're using couldn't implement responsive
      | design and accommodate that setup.
      | 
      | As designers we would just need to embrace responsive
      | design and stop trying to control everything.
 
    | amelius wrote:
    | > and my response is "why would you ever need to know that?"
    | 
    | The author wants to know, so this is simply the wrong
    | question. I agree with the author that it is strange that a
    | quantity which is in principle easy to compute behaves in
    | such an unreliable way. It makes designing stuff more an
    | iterative instead of a first-time-right experience.
    | 
    | Also, if you specify X and get Y instead, then that is a way
    | for websites to fingerprint your browser, which is another
    | reason to make the computation more reliable.
    | 
    | > It's ok for apps to look different on different platforms.
    | 
    | We've been all in the situation where you designed something
    | for device A and it looks off when viewed on device B. A word
    | that wraps in the wrong place, or a button that is 1px taller
    | than the button next to it, etc. More control over what is
    | shown in the browser is always better. (Of course, a user
    | should be able to override everything, but that is another
    | matter entirely).
 
    | thomasfromcdnjs wrote:
    | I like this opinion but not sure if it translates well to
    | building apps in the real world.
    | 
    | A lot of work goes into UX research and A/B testing, if fonts
    | are too flexible none of your results will be meaningful.
 
      | danShumway wrote:
      | Any kind of user customization will have the same effect.
      | Any preference that the user can edit can be a confounding
      | variable in an A/B test.
      | 
      | I don't want to live in a software world where as a user
      | I'm forced into a one-size-fits-all approach to every
      | interface just because it makes A/B testing easier.
 
      | akersten wrote:
      | I would posit that if rendering differences in font display
      | are affecting A/B testing a workflow, the A/B testing
      | apparatus has failed to control for confounding factors and
      | was probably invalid anyway. If OSX is known to render
      | differently than Windows (and it's not just fonts), why are
      | you comparing cohort A from Windows to cohort B from OSX?
      | That is an analysis error.
 
    | simion314 wrote:
    | A problem I had and I could not find a solution (maybe
    | someone could help me).
    | 
    | I want to show a button for the user to click. I respect my
    | user and I want my button not to be too big or small, I would
    | like it to be equal or similar to his preferred button size
    | he configured his OS to use. If you search for the best
    | practices you find studies that say that on mobile the button
    | should be maybe 10mm real size , but good luck setting a css
    | dimension on the button that will ensure either this default
    | size on all devices. IMO there should be a css value for
    | preferred font size and preferred touch button size so you
    | don't get at the same time complaints that the button is too
    | large or too small. (I do mostly bgackend so maybe I missed
    | something when searching, maybe there is some hidden trick to
    | do this...and I am referring at mobile devices)
 
      | danShumway wrote:
      | Having another unit for "touch area" would be kind of nice,
      | I can imagine uses for that. The device/browser/user could
      | set how large a `ta` unit is for buttons/inputs.
      | .ClickBtn { min-width: 10ta; min-height: 5ta; width: 15em;
      | }
      | 
      | Wouldn't just be useful for mobile, I can imagine even on a
      | desktop a user with Parkinson's or something might have
      | trouble precisely using a cursor and want bigger
      | interaction areas when they visit a website.
      | 
      | The most common solution I see online is to swap layouts
      | when the page drops below a certain aspect ratio or width,
      | which can actually be kind of annoying on desktops. It's a
      | hacky solution.
      | 
      | There are also some media queries you can do to detect the
      | presence of a mouse in some browsers, which can work, but
      | also doesn't really hold up in a world with convertible
      | devices that can be simultaneously mouse-drive and touch-
      | enabled.
 
        | sings wrote:
        | > The most common solution I see online is to swap
        | layouts when the page drops below a certain aspect ratio
        | or width, which can actually be kind of annoying on
        | desktops. It's a hacky solution.
        | 
        | In many scenarios, there is no way to interpolate between
        | the ideal layouts for large and small screens. This makes
        | it necessary to arbitrarily select some point where the
        | layout is rearranged as the viewport changes.
        | 
        | I agree that this behaviour can be annoying on desktops
        | as the window is resized, but it's better than the
        | alternative - a layout that needs to work the same way
        | for drastically different screen sizes.
 
        | simion314 wrote:
        | The problem I have presented in the grandparent comment
        | could be solved either with:
        | 
        | - let me specify the button size in real world dimensions
        | 
        | - let me specify that my button should be the same size
        | as Safari/Chrome buttons in the toolbar.
        | 
        | Then my users can't complain that on their device the
        | buttons are too big or too small. The page was something
        | like a map with a toolbox on bottom, if you make the
        | buttons too big the map area is reduced, if the buttons
        | are too small then are hard to use.
        | 
        | With native toolkits like Qt you have a toolbox widgets,
        | you don't define any dimension or colors and the user
        | theme will handle everything.
 
    | ryandrake wrote:
    | > It's ok for apps to look different on different platforms.
    | We need to stop trying to design things pixel-perfect to the
    | mockups - I thought we could have left that trend behind in
    | the early 2000's.
    | 
    | Thank you, Yes Yes!
    | 
    | The web was much better when it was annotated text: You took
    | a primarily _text_ document, maybe decorated with a few
    | formatting hints, and let the User-Agent take care of the
    | rest. Over the years, browsers have handed way too much fine-
    | grained control over to web developers, and the result is
    | thousands of developers treating my Hyper _Text_ browser as
    | some kind of interactive graphic design canvas. This has
    | really been a step backwards in web usability, even though it
    | enabled nice fancily-designed blogs and  "web apps" of
    | dubious value.
 
  | amelius wrote:
  | > > Specify it in pixels
  | 
  | > No thank you.
  | 
  | The article is _NOT_ about px versus em or pt.
  | 
  | It is about specifying sizes in a way that makes sense, i.e.
  | based on visible quantities rather than abstract quantities
  | that are difficult to understand.
 
    | sings wrote:
    | Agreed, this definitely goes off on a tangent.
    | 
    | The article is mostly about switching two fonts with the
    | expectation that the visual size of the characters remains
    | consistent. That expectation fails because the em size is
    | arbitrary with respect to the visible caps-height.
    | 
    | As it stands, fonts can have drastically different rendered
    | sizes at the same specified font size. This leads to all
    | sorts of problems, like ensuring fallback fonts have similar
    | metrics to the one you expect to load.
 
    | setr wrote:
    | It's not just difficult to understand, the em height /
    | character shape described by the article are total nonsense
    | -- they have zero relationship to the font itself, and no
    | relationship between one font's eg height and another.
    | 
    | Which ultimately means that font sizing is entirely nonsense:
    | the only thing you can say is font size 1 is smaller than
    | font size 2, but it's impossible to say by how much, or guess
    | the difference, except when talking about one, and only one
    | font.
    | 
    | That is, a font with size 16 roughly corresponding to the
    | same size in another font is entirely defined and enforced by
    | _nothing at all_ -- it's purely a "happens to be true".
    | 
    | Thus, the only real way to handle font sizing predictably is
    | to never switch them out, because you're really dealing with
    | undefined behavior
 
  | samatman wrote:
  | The main point of the article, as I see it, is that the "em"
  | used in fonts isn't the intuitively correct em size.
  | 
  | It's just a control box used by the font developer, and the
  | result is that designers can't get a consistent font size. They
  | can know, more or less, what something is going to look like
  | given the font they want to load, but the fallback font might
  | have a different concept of em size and look more different
  | than it would need to be.
  | 
  | So having a different metric, which is exactly capital height,
  | makes fonts look more similarly-sized to each other at the same
  | capital-height resolution, which he demonstrates in the
  | article.
  | 
  | This seems valuable to me.
 
  | crazygringo wrote:
  | I'm sorry, but you seem to be under some misconceptions about
  | how pixel sizing works on the web.
  | 
  | > _resolution independent font-size and container sizing should
  | be the default_
  | 
  | It already is. CSS "px" doesn't refer to physical pixels _at
  | all_ , they're called _logical pixels_. Which on old screens at
  | 100% zoom may map 1:1, but these days are more likely to map
  | 2:1 or even 3:1, and with OS and browser zoom levels may be
  | things like 1.666:1 or 2.5:1.
  | 
  | > _Size your fonts with `em` and `rem` units_
  | 
  | In the browser, em/rem are necessarily defined by a parent/root
  | element that is ultimately defined in either px or pt, so your
  | suggestion doesn't achieve what you think it achieves.
  | 
  | Today, whether you write your CSS in "em" or "px" results in an
  | _identical_ user experience. It 's really just whether you
  | prefer to work with a baseline of something like "16px" and use
  | larger round integers (8px, 1000px, etc.) or prefer to work
  | with something like a baseline of "1em" and use small numbers
  | with lots of decimals (0.5rem, 30rem, 0.05rem).
  | 
  | Ultimately we need _some_ measure of consistency, and browsers
  | have _long_ defined that as a default legible body text size of
  | 16 px = 12 pt (= 1 em by default).
 
    | danShumway wrote:
    | > It already is. CSS "px" doesn't refer to physical pixels at
    | all, they're called logical pixels.
    | 
    | Okay, yes, but when people ask what the current resolution of
    | a page is on the web, most of the time they're talking about
    | those logical pixels. You're correct, but also this doesn't
    | change anything about my argument. It's still a mistake to
    | tie layout to the resolution of a web page, regardless of
    | what unit you're using for a pixel.
    | 
    | > Today, whether you write your CSS in "em" or "px" results
    | in an identical user experience.
    | 
    | No it doesn't. Like you said, `em` units are based on the
    | current container font sizes. Pixels aren't.
    | 
    | There's no way in the pixel world to say that you want a
    | container that will always display 40 em-sized characters,
    | and to have that continue to be true even as font size
    | increases and decreases.
    | 
    | You can try this yourself[0]. Set Firefox to Zoom Text Only
    | (View->Zoom), then zoom in/out on a container sized with
    | pixels and a container sized with `em` units. Only the `em`
    | sized container will change its size, because its width is
    | being tied to the font settings so its width scales
    | proportionally as the font size changes.
    | 
    | [0]: https://jsfiddle.net/jbwf6um4/
 
      | crazygringo wrote:
      | > _It 's still a mistake to tie layout to the resolution of
      | a web page_
      | 
      | You've got to tie it to _something_. Your argument falls
      | apart because  "em" are still defined in terms of "px" at
      | the root element. You're _always_ defining layout relative
      | to a logical resolution. Also, responsive design reports
      | viewport widths in logical pixels, so logical pixels are
      | still what everything is ultimately tied to.
      | 
      | > _Set Firefox to Zoom Text Only (View- >Zoom)_
      | 
      | Nobody does that anymore. That was how browsers zoomed two
      | decades ago. For a _long_ time now, browser zoom defaults
      | to zooming all content, i.e. logical pixel size. Heck,
      | Chrome doesn 't even _have_ a text zoom option anymore. I
      | 'm actually surprised Firefox still does -- maybe it's a
      | backwards-compatibility thing?
      | 
      | It's true that maybe two decades ago defining sizes based
      | on em was a best practice, precisely because browsers only
      | zoomed font sizes. But that ceased having relevance a long
      | time ago, once browsers stopped using text zoom (except as
      | an obscure setting).
      | 
      | Today, in the browsers and browser settings 99% of people
      | use, px vs em has zero difference for the user. It's just a
      | matter of programming taste. ( _Especially_ now that it 's
      | generally recommended to use rem over em anyways.)
 
        | tracker1 wrote:
        | Chrome on mobile absolutely has a text zoom, it's exposed
        | as an OS function, but chrome respects it... my vision is
        | not great, so in accessibility settings I have fonts set
        | to largest. Chrome does a decent job (as most Android UI)
        | of respecting this. The apps that don't, or don't do it
        | well (Facebook) are the ones that are particularly
        | annoying.
        | 
        | It may not be exposed in the browser directly, but the
        | functionality is definitely there.
 
        | danShumway wrote:
        | > because "em" are still defined in terms of "px" at the
        | root element
        | 
        | No they're not, they're tied to the _resolved_ font size
        | of the current element they 're in.
        | 
        | That matters if someone overrides part of the CSS, so
        | even from a pure engineering perspective this makes a
        | real difference. It also matters if the user changes the
        | font size of their browser.
        | 
        | `em` units define font size _in relation_ to the current
        | font size. That font size might be set elsewhere in CSS
        | using pixels, it might be set by the browser. It might be
        | set using viewport width, it might be set using
        | percentages. It might be set in pixels and overridden by
        | the user using the browser 's minimum font size feature.
        | 
        | In all of those cases, as a designer you will be glad
        | that you used `em` units for container width and child
        | text rather than pixels.
        | 
        | > Nobody does that anymore. That was how browsers zoomed
        | two decades ago.
        | 
        | This is how Firefox's default font sizing works today. I
        | listed that zoom option so it would be easier for you to
        | play with it, that's the only reason. But if you go into
        | your settings and change the default font size of the
        | browser (which is absolutely something that people who
        | have bad vision still do today), then you will see the
        | same result in the JSFiddle I linked.
 
        | crazygringo wrote:
        | > _This is how Firefox 's default font sizing works._
        | 
        | That's misleading. Firefox's default _zoom_ sizing zooms
        | fonts together with everything else. Virtually nobody
        | uses _font-only_ zooming. People with bad vision still
        | overwhelmingly use page zoom -- because if your vision is
        | bad you need _everything_ enlarged, including things like
        | icons and images.
        | 
        | Also, your description of how font size for em's is set
        | is incorrect. It's _always_ set ultimately relative to
        | px. If set by the browser, it 's a default stylesheet
        | that specifies "body { font-size: 16px; }". It _cannot_
        | be set as a percentage of viewport size using HTML /CSS,
        | that doesn't exist as an option in font-size. If the
        | browser sets a minimum font size, that too is ultimately
        | in px.
        | 
        | Your whole argument hinges on people using font-zooming,
        | when that died for all intents and purposes many, many
        | years ago. There's no reason for web designers to
        | accomodate nonstandard font zoom anymore -- forcing all
        | UX units to be in ems just re-implements page zoom using
        | text zoom, which is utterly redundant.
        | 
        | Use px or use rem, they're functionally equivalent --
        | it's just a matter of developer preference.
 
        | danShumway wrote:
        | > Virtually nobody uses font-only zooming.
        | 
        | I don't know how you can claim this. I have set up
        | multiple computers for elderly people and taken advantage
        | of that feature. Heck, _I_ have taken advantage of that
        | feature on devices with weird aspect ratios like the
        | older Surface Pros.
        | 
        | > It cannot be set as a percentage of viewport size using
        | HTML/CSS, that doesn't exist as an option in font-size
        | 
        | What?                 font-size: 1vw;
        | 
        | > If the browser sets a minimum font size, that too is
        | ultimately in px.
        | 
        | This is being pedantic. If a user or a parent container
        | is setting the font size, that is clearly a different
        | scenario then setting it in the container itself.
        | 
        | If you're going to go down this route we might as well
        | claim that browser fonts are set based on physical pixels
        | as well, since ultimately the browser resizes its
        | internal representation of pixels based on the device
        | aspect ratio.
        | 
        | > it's just a matter of developer preference.
        | 
        | I don't know any experienced developer who writes CSS for
        | a living that would claim this. Pixel-based CSS files are
        | a nightmare to maintain when nesting components, this
        | makes a tangible difference to how you architecture your
        | CSS files.
 
        | mtone wrote:
        | What is the use case for font-only zooming?
        | 
        | I just tried it on a few sites and it either doesn't
        | change much/anything or breaks stuff -- either by
        | overlapping text, or not increase the width of text zones
        | so you end up with few words per line in the middle of
        | the screen which was particularly bad on a newspaper site
        | (along the ridiculously undersized article photo).
        | 
        | I thought it could save some space in headers and such if
        | they don't zoom those, but if they used ems everywhere as
        | might be best practice then there's no win to have.
        | 
        | So it's either the same or worse than full-page zooming
        | in every test so far. This is not only a now-obscure
        | feature, it should be considered deprecated imo --
        | zooming (or changing default) font size feels like
        | hijacking a responsive web page source and hoping for the
        | best.
 
        | [deleted]
 
        | danShumway wrote:
        | > either by overlapping text, or not increase the width
        | of text zones so you end up with few words per line in
        | the middle of the screen
        | 
        | Those the problems that I mentioned. Those problems are
        | why you don't use pixels instead of `em` units.
        | 
        | If you increased the font size in a PDF then columns,
        | diagrams, and layouts would also break. But you wouldn't
        | be surprised because you don't expect the PDF to be
        | responsive. We expect the browser to be responsive.
        | 
        | The use-case for font-only zooming in general is that as
        | a designer, there are elements that should scale with the
        | font and elements that shouldn't. Full-page scaling works
        | by acting like the browser is just a lower resolution, so
        | everything scales upwards except percentage units and
        | viewport units, including things like border widths,
        | spacing between columns, etc... Sometimes as a user
        | that's what you want. Sometimes it's not.
        | 
        | As a designer, it would be useful to be able to have more
        | control over that process to make something that
        | genuinely feels responsive, rather than to be completely
        | subject to a zoom method that is just pretending you're
        | on a screen half as large and then upscaling before it
        | renders.
        | 
        | It would also be useful because we'd like to build the
        | web into an extensible platform that users can interact
        | with in creative ways. So maybe we'd like the ability to
        | scale only _part_ of a webpage. Note that this is not
        | completely theoretical, Firefox already lets users set
        | minimum font sizes. If I set a minimum font-size of 14px,
        | it doesn 't matter if you say that your font-size is 8px,
        | it will render at 14px -- but all of your bigger titles
        | and headers will be unaffected. That's the kind of
        | feature that works if browsers allow font-based zooming,
        | but that is impossible to do with full-page zooming.
 
        | crazygringo wrote:
        | Wow, you're right about vw. I've never once seen it in
        | the wild, MDN's page for font-size certainly doesn't
        | mention it, and I've never seen it listed anywhere as a
        | best practice. But TIL, thanks.
        | 
        | It's clear you really like font-zoom, and also that your
        | preference is extremely uncommon. I still don't know why
        | you recommend writing CSS using "em" dimensions for UI
        | elements to work with font-zoom, rather than just "px"
        | with page zoom, when the end result is identical. I
        | mean... why _would_ you use font zoom when the rest of
        | the world has moved on to page zoom?
        | 
        | And I also don't know why you say nesting pixel-based
        | components are a nightmare. Dimensions work exactly how
        | you think they will, relative to the page.
        | 
        | On the other hand, nesting em-based components _is_ a
        | nightmare, because they jump crazily in size. You never
        | want your date picker jumping 2x in size just because you
        | placed a button for it inside of a larger header row vs.
        | inside of a smaller form line. In fact, that 's the whole
        | reason Bootstrap migrated from em to rem, precisely not
        | to have that problem.
        | 
        | Em-based components are really only appropriate for the
        | most trivial typographical "components" if you can even
        | call them that, like a bullet or tiny badge or something
        | that gets used in different sizes of text. Certainly not
        | components you would usually nest.
 
        | danShumway wrote:
        | > and also that your preference is extremely uncommon
        | 
        | I'm still confused about this. You're commenting under an
        | article that specifically calls out font-based zooming
        | and differing font-sizes between devices as a problem in
        | native environments. If it was as rare as you say, why is
        | the writer upset about it? Do people only customize their
        | fonts in Gnome/Mac, and never on the web? Nobody wants
        | their browser to inherit system settings? Firefox didn't
        | even have an option to set a default zoom on every
        | webpage in the style you describe until early 2020.
        | 
        | I mean, you can say this is uncommon and I'm in a bubble,
        | and maybe you're even right, but I feel like at some
        | point I'm going to want to see some stats on that,
        | because I'm not sure I believe you.
        | 
        | > On the other hand, nesting em-based components is a
        | nightmare, because they jump crazily in size. You never
        | want your date picker jumping 2x in size just because you
        | placed a button for it inside of a larger header row vs.
        | inside of a smaller form line.
        | 
        | Depends heavily on the component; this is why both `em`
        | and `rem` units are useful. But it's not that uncommon to
        | want nested elements like a date picker to scale.
        | 
        | My experience (doing a fair amount of front-end work in
        | my day-to-day job, and writing a ton of CSS from scratch)
        | is that (particularly when I'm writing in BEM style) I
        | use `em` more often than `rem`, even for complicated
        | components. But yeah, I do use `rem` sometimes, it's not
        | that uncommon. It depends a lot on what you want the
        | behavior of a component to be.
        | 
        | > In fact, that's the whole reason Bootstrap migrated
        | from em to rem, precisely not to have that problem.
        | 
        | Two things. First, they didn't migrate to pixels, they're
        | still inheriting their font sizes from user/browser
        | preferences. In fact, Bootstrap in part moved to `rem`
        | specifically to get away from pixel units in multiple
        | parts of the codebase[0]. I don't see any sources online
        | that claim they've abandoned the `em` unit entirely.
        | 
        | Second, I would very, very hesitantly suggest that maybe
        | Bootstrap is not actually the best example of responsive
        | design. I'm not going to get into an argument about it,
        | it's a very impressive framework. It's just in my
        | experience often a pain to work with, precisely for this
        | kind of reason (among others). You nest an element in a
        | static page and then dig through layers of classes to
        | figure out why nothing adapts to the container it's put
        | in. Bootstrap is very useful until you start to heavily
        | customize anything. Just my opinion, and to be fair I
        | have not tried out Bootstrap 5 yet.
        | 
        | The reason why nesting pixel-based components is a
        | nightmare is because it forces you to care about every
        | CSS class that sets a width in your component. It forces
        | you to update every width and height in the component
        | every time you want to make a change. For codebases you
        | do control, this is sometimes merely annoying (depending
        | on how clearly the CSS is written). But for 3rd-party
        | styling systems, it can be a nightmare.
        | 
        | [0]: https://github.com/twbs/bootstrap/issues/19943
 
      | zamadatix wrote:
      | Just completely forget "resolution" when talking about CSS
      | pixels as they have nothing to do with the actual
      | resolution (virtual or physical) when it comes to layout. A
      | CSS "pixel" is just another way of saying 1/96th an inch
      | just like saying a pt is 1/72 an inch.
      | 
      | Em is indeed "font size * value" which is the difference,
      | and only difference, vs using pt or px or pc or any other
      | absolute sizing reference. Per CSS spec though this is only
      | a difference for the _developer_ not the _user_ as the
      | other person originally stated - either way on any screen
      | at any zoom the results are identical to the user. Well
      | negating the user only zooming portions of the design
      | which, by definition, is not going to give a
      | proportionately scaled design back. Also you can actually
      | implement this in CSS using px you just need to tie it to
      | calc() - though cleaner to just use em if that's all you
      | wanted to do at that point. Like the original commentor
      | said though, eventually em is going to read back to
      | something which defines font size in absolute measures,
      | such as px or pt, so for all of the debate either way
      | eventually your font is all absolute measured based it's
      | just a matter of what the original measure is currently set
      | to (16px by default).
      | 
      | Which comes to what I really wanted to say after clarifying
      | the above, I like defining the root font size in px and
      | using rem everywhere else. In that way I can think in terms
      | of "I want this header to be 3x as large as the base font
      | on the page", easily change the base font to whatever px
      | value I want (scaling all the page text accordingly), and I
      | don't have to worry about inheritance if I change a
      | parent's font size. Best of both worlds between em and px
      | IMO. Like I said you could get the same thing, or something
      | more advanced even, with calc() and a variable but no
      | reason when rem has been built into browsers for ages.
 
        | danShumway wrote:
        | > which is the difference, and only difference, vs using
        | rem or pt or px or pc or any other absolute sizing
        | reference
        | 
        | It's a difference for anyone who changes the default text
        | size in Firefox. The "Zoom Text Only" option works the
        | same way as Firefox's default text sizing. This is a
        | difference that does matter for anyone who adjusts either
        | the default or minimum font size in their browser, it's
        | not theoretical.
        | 
        | > I like defining the root font size in px and using rem
        | everywhere else
        | 
        | This is better than using pixels everywhere. I would not
        | define a root font size in pixels, I would leave it as
        | 1rem. BUT, what you're doing is _much_ , much better than
        | what the article is proposing, so I'm not going to be too
        | critical.
 
    | jan_Inkepa wrote:
    | > It already is. CSS "px" doesn't refer to physical pixels at
    | all, they're called logical pixels. Which on old screens at
    | 100% zoom may map 1:1, but these days are more likely to map
    | 2:1 or even 3:1, and with OS and browser zoom levels may be
    | things like 1.666:1 or 2.5:1.
    | 
    | Yeah it's a nightmare if you're doing pixel-art-y games in
    | the browsers, there's last time I checked no way in general
    | to get access to physical pixels anymore, which makes
    | integer-multiple upscaling AFAIK impossible in general.
    | Hurrah. [ disclaimer: The browser rendering stack is
    | complicated enough that I might be wrong. ]
 
      | wffurr wrote:
      | CSS px * devicePixelRatio = physical pixels
      | 
      | I feel your pain about non-integer scaling ratios. The way
      | I hack around it is to set the canvas context to an integer
      | number of device pixels, and then set the CSS size of the
      | canvas to a fractional size: device pixels / DPR.
      | 
      | We use this along with some other hacks on keep.google.com
      | and some other sites to map 1:1 to display pixels to try to
      | ensure hardware overlay promotion for the inking surface.
 
| dukeofdoom wrote:
| I was working on Display an Event Title, across devices. Sine the
| title can very dramatically, from just a word, to as many as 10+
| words. Its hard to size this properly, so that it displays on
| phone and computer screens. Not really sure which approach I
| should have taken, but I ended up using if statements to change
| font size based on word count. Wish there was some way of setting
| the font size so that it fills to the end of the screen. But its
| no larger so that title is longer than two lines. Its really easy
| to spot a title when its too big or too small, so that its not
| aesthetically pleasing. But don't really know how to do that in
| code. Seems like a font size that is tied to the line length
| might help.
 
  | perardi wrote:
  | Perhaps using...
  | 
  | http://fittextjs.com
 
| true_religion wrote:
| In other news, this guys dark theme simply blacks out the sight
| and only lets you read text by using the mouse cursor as a flash
| light.
| 
| It's hilarious.
 
  | dredmorbius wrote:
  | https://news.ycombinator.com/item?id=26590267
  | 
  | https://news.ycombinator.com/item?id=26072323
  | 
  | https://news.ycombinator.com/item?id=24589944
  | 
  | https://news.ycombinator.com/item?id=23941312
 
  | forgotpwd16 wrote:
  | Heh, that's cool. But images are over the flash light making it
  | seem strange.
 
  | marcosdumay wrote:
  | _Night_ theme, as opposite to day. It doesn 't seem to support
  | a dark theme.
  | 
  | Anyway, Firefox Dark Reader extension makes they both moot.
 
  | [deleted]
 
  | alakhtikov wrote:
  | (off) Hey @true_religion, we are building a new p2p CDN and
  | looking for a piece of advice from a domain expert. It would be
  | nice to speak with a person, who is running "a media group with
  | massive bandwidth requirements (1PB+ per site)". If you don't
  | mind to do a user interview, please shoot me an email at
  | anton+hn@farbacdn.com
 
  | kevincox wrote:
  | It is, but I really wish there was an option other than that
  | yellow. Maybe if you click it again you can get an actual dark
  | theme? Pretty please?
 
    | mixmastamyk wrote:
    | Reader view in light or dark mode works fine.
 
| njharman wrote:
| Whether the arguments or proposals are correct or better. Doesn't
| matter.
| 
| Us, as in people reading blog post lack the ability to change
| 100's of years of conventions and standards across all the world.
| Change
 
| ineedasername wrote:
| You can't fix font size without also addressing printing. 72 may
| have been chosen as the PPI due to Mac monitors at the time, but
| it wasn't just for the on-screen size: It also meant that what
| you printed out on paper would be certain size as well. The roots
| in physical printing is precisely why there can a disconnect
| between screen size and text size: The bedrock assumptions that
| were baked into the system were targeting desktop publishing.
| 
| That's still the case today: 12pt font on a 13" 1080p screen will
| print may look a lot smaller than 12pt font on a 24" 1080p
| display, but when you hit the print button they will both be the
| exact same size on paper.
 
| anticristi wrote:
| Reading this article makes me feel nostalgic: Remember the time
| when text rendering meant bitblt-ing from an 8x8 pixel matrix
| stored in ROM.
 
  | grenoire wrote:
  | "Dude, I can't believe that your TTY renders the 'a's counters
  | at four pixels high whereas mine at six! They're both eight-by-
  | twelve in the bitmap."
 
  | jfk13 wrote:
  | And font design meant uploading a new set of bitmaps to the
  | video card (if you were lucky enough to have a machine where
  | they weren't strictly limited to what was provided in ROM).
  | 
  | The first non-Latin font editor, text processing and
  | typesetting software I worked on ran on just such systems. Yes,
  | those were very different times!
 
| swiley wrote:
| Pixels are meaningless unless you're an artist, especially with
| modern graphics APIs where it's often difficult to actually draw
| individual pixels.
| 
| IMO: everyone who's used font size outside college knows what an
| em is. Just standardize a point size in terms of a physical
| measurement (maybe stick with 1/72 inches since everyone except
| Microsoft apparently uses that) and make the "font size" a
| coefficient that maps ems to inches.
| 
| Furthermore: cap height doesn't capture as much as an em does:
| there's spacing between letters which has little to do with cap
| height. Everything about this is wrong.
 
| arduinomancer wrote:
| Isn't specifying font size as "display-independent pixels (dp)"
| supposed to deal with this?
 
| 8bitsrule wrote:
| relevant XKCD: https://xkcd.com/1273/
 
| jfk13 wrote:
| > The solution
| 
| > - Specify cap height, not em square size.
| 
| > - Specify it in pixels.
| 
| Specify cap height, really? How does that work for Arabic or
| Tibetan or Mongolian (or ..., or ...) -- so many writing systems
| where "cap height" is meaningless, because there are no "capital
| letters" and no single dimension that is common across most
| characters in the set? Not all the world uses English.
| 
| Specify it in pixels? So if I set my editor font size to 16
| pixels, on my MacBook's display, with 226 pixels per inch, the
| 16-pixel tall letters will be somewhat less than 2mm tall, if
| I've got the calculation right. Move the window to my external
| FlexScan display and that same 16-pixel letter will now be 4.32mm
| tall.
 
  | skrebbel wrote:
  | Oh come on, this entire article is obviously about Latin
  | typography. Other scripts are simply out of scope.
  | 
  | You'll find that nearly all typography articles focus on a
  | single script they way. Often that's Latin because of its
  | widespread use in the west, but not always.
  | 
  | There's no racism here. Articles about pizza aren't dismissive
  | of kebab.
 
    | akersten wrote:
    | > . Other scripts are simply out of scope.
    | 
    | Luckily, the font engine developers for popular operating
    | systems did not scope those issues out just because they were
    | inconvenient for designers who falsely assume that "16"
    | should mean an arbitrary part of a letter in a font is always
    | 16 pixels high.
    | 
    | > There's no racism here.
    | 
    | No one said there was until you brought it up?
 
    | ClumsyPilot wrote:
    | So basically:
    | 
    | "This car is only for driving in sunny weather on a perfectly
    | smooth surface. It doesn't have lights, tyres, suspention or
    | heating because traction, snow, rain, road bumps and darkness
    | are out of scope."
 
      | [deleted]
 
    | jfk13 wrote:
    | Nobody said anything about racism.
    | 
    | Yes, the article was obviously focused on Latin typography,
    | but it was calling for a user interface change that would
    | affect everyone using the affected software, no matter what
    | language they speak/write.
 
    | kps wrote:
    | For Latin, x-height is much more important than cap height,
    | in particular for selecting compatible sets of fonts.
 
  | johncolanduoni wrote:
  | The author seems to be using the web notion of CSS pixels
  | (which take PPI into account) without qualifying it. This is
  | understandably pretty confusing to anyone who has used pixels
  | in, well, any other context.
 
  | mitchdoogle wrote:
  | OK. Well let's come up with a solution that takes into
  | consideration these other systems. Instead of getting angry
  | that someone was ignorant of other languages, help them
  | understand a way their ideas could be adjusted to be more
  | inclusive.
 
    | jfk13 wrote:
    | Who's angry? I just pointed out that the proposed "solution"
    | has some shortcomings that didn't appear to have been
    | considered at all.
    | 
    | OK, a more inclusive solution: how about sizing fonts based
    | on a coordinate space within which the font designer is free
    | to draw the glyphs using as much or as little of the space as
    | they consider appropriate for a given character. (They can
    | even draw beyond the nominal "bounds" of the sized coordinate
    | space, e.g. for long tails or flourishes.)
    | 
    | We could call it... oh, let's see... maybe the "em square".
 
      | yoz-y wrote:
      | That doesn't solve the need of: "I have two different fonts
      | and want to display them having the same size". And also "I
      | want to center a piece of text inside a box". Both of which
      | are basically impossible these days without special casing
      | for each font.
 
        | jfk13 wrote:
        | "I ... want to display them having the same size" is too
        | vague to be useful.
        | 
        | Do you mean having the same x-height (the main body of
        | the lowercase letters, assuming Latin script)? Or the
        | same cap-height? Or the same ascender height? Or the same
        | descender depth? Or the same character widths? Or a
        | similar overall amount of "ink" in each character?
        | 
        | Yes, it's impossible without special-casing for each
        | font, because there is no clear basis for making such an
        | equivalence, given how designs differ.
 
        | yoz-y wrote:
        | The general case would be to have text written in the
        | same paragraph align well. To me that encompasses same
        | baseline, same x height, and in the case of mixing
        | scripts same cap height (in case of CJK). Basically "do
        | what I mean". I understand that it's hard, but it should
        | be at least doable. If it would require being able to
        | specify which height to consider, so be it, make it an
        | option.
 
      | The_rationalist wrote:
      | This is a nice solution which however won't solve the
      | problem for non-updated font polices.
 
  | anticristi wrote:
  | Forget "foreign" scripts. More pressing is the concern of
  | properly sizing emoticons, so they don't look odd when mixed
  | with Latin.
  | 
  | I'm sometimes wondering what problems collective human
  | intelligence had solved, had we stopped short of encoding
  | emoticons in Unicode.
 
    | iainmerrick wrote:
    | Sorry to be pedantic, but I think you mean "emoji".
    | 
    | "Emoticons" are the ones built out of letterforms, like ":)"
 
      | rhabarba wrote:
      | Technically, emojis are built out of UTF-16 letterforms.
 
        | samatman wrote:
        | That is an impressive amount of technical incorrectness
        | to fit into one short sentence asserting technical
        | correctness!
 
  | crazygringo wrote:
  | > _so many writing systems where "cap height" is meaningless_
  | 
  | Can you name any writing system that doesn't have a logical
  | equivalent? If you pull up all your examples, a quick
  | eyeballing of them reveals there is a clear upper and lower (or
  | left and right in the case of vertical scripts) "line" that is
  | the obvious equivalent to cap height, even if ascenders or
  | descenders sometimes go over it.
  | 
  | If you don't want to call it "cap height" in favor of a more
  | inclusive term then you're welcome to suggest one, but the idea
  | is generally applicable. It's not ignoring other scripts.
  | 
  | > _Specify it in pixels?_
  | 
  | This is a solved problem, the author presumably meant logical
  | pixels (e.g. as used in CSS), not display pixels. Logical
  | pixels map to display pixels either 1:1, 2:1, 3:1, etc. or by a
  | non-integer ratio when other browser or OS zoom settings are
  | used.
 
    | jfk13 wrote:
    | Do you really see a clear cap-height (and baseline, to
    | measure it from) here? https://software.sil.org/awami/design/
    | 
    | Or look at Thai: https://omniglot.com/writing/thai.htm. Yes,
    | there's a pretty clear upper and lower "line", but it's much
    | more like an equivalent to ex-height in Latin than to cap-
    | height.
    | 
    | Giving it a different name doesn't help: if you put Latin
    | text with 16px cap-height alongside Thai text with the "body"
    | of the letters sized to 16px, they'll look awful (the Thai
    | will be much too big).
    | 
    | (As someone else has already said, ex-height is usually a
    | more useful measure for Latin script, and that would be
    | closer to matching how something like Thai might be measured
    | -- though it'd be a bit on the small side. And it wouldn't
    | interoperate well with Chinese, for example.)
 
      | crazygringo wrote:
      | > _Do you really see a clear cap-height (and baseline, to
      | measure it from) here?_
      | 
      | I absolutely do. Do you... not? You can do a quick web
      | search for "Arabic type anatomy" that will make it crystal
      | clear for you.
      | 
      | I mean it obviously has nothing to do with "capital"
      | letters (so a more inclusive _term_ would be better,
      | probably), but there are clear upper and lower  "bounds"
      | beyond which ascenders/descenders poke out.
      | 
      | The _relative_ sizing of fonts (and line heights) _across_
      | languages is a separate issue, and is complex. But it 's a
      | disaster in interfaces _today_ , where e.g. traditional
      | Chinese characters sized to cap height become virtually
      | illegible they're so small.
 
        | taejo wrote:
        | > I absolutely do. Do you... not? You can do a quick web
        | search for "Arabic type anatomy" that will make it
        | crystal clear for you.
        | 
        | I also do not. When I search for that, I find articles
        | like https://www.type-together.com/arabic-type-anatomy
        | which say things like "Do not use 'x-height' and 'cap
        | height' simply because there are no 'x' or capitals in
        | Arabic."
        | 
        | So since you do see such a thing, maybe you could show
        | us? You could give a specific link or make a drawing.
 
        | crazygringo wrote:
        | The article you linked clearly shows lines labeled
        | "baseline", "descender", "Latin x-height" and "ascender".
        | 
        | And yes, it says do not use the term "cap height" but I
        | _already_ stated that a more inclusive term would be
        | better. It 's still obvious what's being referred to.
        | 
        | In current practice (e.g. put roman and Arabic fonts next
        | to each other on the same line in your browser), the
        | Latin "baseline" and "cap height" lines clearly are
        | conceptually equivalent to the Arabic "descender" and
        | "ascender" lines.
        | 
        | Do you see it now?
        | 
        | I don't understand how anyone's trying to argue that
        | there are languages that don't have obvious logical
        | top/bottom boundaries (or right/left for vertical
        | scripts) for basing font metrics on.
 
  | insert_coin wrote:
  | and em works in arabic and mongolian?
 
    | bsza wrote:
    | Tibetan doesn't even _have_ a letter m.
 
      | dylan604 wrote:
      | What are M&Ms called in Tibet?
 
        | rhabarba wrote:
        | I would meditate over this question, but there is no Om.
 
        | jfk13 wrote:
        | AUM is U+0F00 TIBETAN SYLLABLE OM.
 
| dec0dedab0de wrote:
| Meh, if it were up to me webpages wouldn't have any say at all
| over fonts or colors. When I was 14 I would browse the web with
| no images, and with the colors and fonts overwritten, and it was
| so nice. Then image maps became a thing and it was a pain, then
| javascript, then menus made of small images, then flash, and it's
| just gotten worse and worse every time around.
| 
| Now there are webpages that don't work right on a 3ghz single
| core processor with 2 gig of ram, because of some reason that has
| nothing to do with what is best for the user.
 
| tolmasky wrote:
| Neither pixels nor ems are the right solution, and a side-effect
| of an era of low-resolution screens, what we need is real
| _physical_ units, and not just for fonts, but for every UI
| element. I should be to say that a button is intended to be an
| inch tall (or 2cm or whatever) -- the point is that it should
| have a height relative to reality, not relative to nothing.
| Imagine if anything else worked like dimensions in software: you
| asked for chair 3 feet tall but every maker of chairs had a
| different definition of a foot. This is how points, pixels,
| everything works on the web. And the most important thing to
| remember here is if you still like this system, you can _build
| it_ on top of one that fundamentally relies on real units at the
| bottom. But it is incredibly difficult to do the reverse. CSS has
| "in" and "cm", but they _don 't mean inch or centimeter_. On most
| browsers, "1 in" is defined as 96 (CSS) pixels[1]. _Except_ , if
| you print, then 1 inch DOES mean 1 inch. Which hilariously means
| that if you want to use CSS to lay out something to print, you
| can't tell how it will actually look until you print, because
| there's no "please just render like you would when you print"
| mode. This has been requested, and the classic answer of "who
| would ever want that" was the response. You can with a lot of
| work (and JS unfortunately, unless you pre-generate a huge CSS
| media query for a wide range of screen resolutions) create
| yourself a unit such that 1em = 1 physical unit, but this has
| other issues when you start wanting to do other things in CSS.
| 
| Screen UI is the only aspect of design where we pretend that
| precision shouldn't matter. It is stockholm's syndrome. I
| remember how people said that its _fine_ (or better?!) that you
| can 't know "for sure" what font will display on the screen on
| the web. MAYBE it's Times New Roman, but maybe not! You should be
| flexible. This is nonsense. Perhaps that's the reality we live,
| but it's not _desirable_. We shouldn 't fool ourselves into
| _preferring_ that. Clearly if we could make the exact font show
| up it would be a better state of affairs. Again, if you really
| believe font uncertainty is _critical_ to the web experience,
| then by all means, add a script that randomly swaps in a
| different serif font occasionally. Boom, everyone is happy!
| 
| Dimensions is the same kind of problem: we're using ideas from an
| age where screen were 256 pixels wide. When you design for print,
| you think about actual size of the produced object. Just because
| someone can resize the window does not mean that the height of
| the letter x should be some abstract unknowable quantity. And
| just because you can set the baseline in size to a specific
| physical size doesn't mean users can't apply a zoom to that. All
| it means is that the language with which we communicate to each
| other is real and not completely different depending on who is
| reading it.
 
| SavantIdiot wrote:
| I think the funniest part about this this post isn't the lack of
| typesetting among people who work with digital typesetting (there
| should be no mystery between points, em, rem, px if you do this
| for a living, that's 101-level stuff)... instead, it is the
| subtext pointing that the latter of the two complaints that
| spawned this is that vertical centering is still a challenge when
| it really should not be. And I can't help but observe that the
| two are tightly related.
| 
| Also, I didn't know the original Mac screen was 72dpi. That is so
| delightful.
 
| mrob wrote:
| There are three font sizes with valid uses beyond designers
| trying to justify their existence: small, medium, and large.
| 
| Likewise there are three valid fonts: fancy (serif or non-Latin
| equivalent), plain (sans-serif or non-Latin equivalent), and
| mono-spaced.
| 
| This means only 9 font sizes need to be decided. The software can
| provide reasonable defaults, and a simple UI to allow to user to
| change them, which won't take long.
| 
| The only difficulty is when a font doesn't provide full Unicode
| coverage. Full coverage will have to be assembled from multiple
| fonts, which means the sizing won't necessarily be consistent.
| But in this case consistency is already lost, so I see no need to
| further complicate the UI. The user can still tweak things with
| fontconfig or equivalent.
 
| c-smile wrote:
| > 16 pt text on Windows is  1/3  larger than 16 pt text on macOS.
| 
| px != pt
| 
| It appears that Windows and Mac browser screenshots are
| misleading at best.
| 
| 1px in CSS is logical unit that is equal to 1/96 of inch. On any
| platform.
| 
| And so neither 1px nor 1pt have anything with screen PPI (size of
| physical pixel measured by a ruler on screen surface).
 
  | kbelder wrote:
  | So a 12px character on a 14" 1080p screen is the same size as a
  | 12px character on an 18" 1080p screen? I'm still somewhat
  | skeptical, despite fifty posts in this thread claiming just
  | that.
 
| chrisseaton wrote:
| > Instead, macOS always uses 72 PPI to convert points to pixels.
| 
| Can't displays report their physical dimensions now? Couldn't
| this be used to restore using a physical dimension like mm for
| font sizes? (Please not inches of all things though!)
 
  | jfk13 wrote:
  | It could, but would usually be misused. People would design for
  | the size of display and typical viewing distance that they like
  | to use, forgetting that these things vary hugely.
  | 
  | (And that doesn't even begin to address the question of what
  | part of the font you'd be measuring.)
 
  | kmeisthax wrote:
  | macOS already does this at the pixel step, by multiplying the
  | entire pixel layout by a scaling term before actually drawing
  | the widgets. So effectively, macOS does _not_ use 72 points-
  | per-inch, it uses 72 points-per-pixel, and then ensures 1 pixel
  | is a particular physical measurement, for the same
  | compatibility reasons that caused us to drop device pixels.
  | 
  | The reason why the author is having issues with text sizes on
  | different size monitors is that macOS does not support
  | _fractional_ scaling; and it 's high-DPI detection is fairly
  | limited. A non-high-DPI monitor has no scaling options
  | whatsoever, it's locked to 1x. High-DPI monitors are locked to
  | 2x; with the additional option to change the desktop's layout
  | size and scale the resulting image to achieve the effect of
  | fractional scaling. (Apple is _really_ paranoid about
  | introducing rounding errors in pixel-aligned layouts, which is
  | why they handle non-integer displays this way.)
  | 
  | BTW, if anyone happens to know how to manually flag a monitor
  | as HiDPI in macOS Mojave (or if I can do it in Catalina/Big
  | Sur), please let me know. I have a 1080p NexDock Touch that I
  | have to run at 720p because macOS won't give me the fractional
  | scaling options on an external monitor.
 
    | armagon wrote:
    | I really wish I could use 1080p with a 1.5x scale factor.
    | 
    | It is worth noting that when Apple was initially developing
    | this feature, around the time of Mac OS 10.5 (Leopard), they
    | had fractional scaling. I thought it was awesome. I can only
    | assume that some artists felt it was not awesome. (I'm going
    | to stop googling for this now, but I think 'Resolution
    | Independence" is a key phrase that will help in finding it if
    | you are interested).
    | 
    | As for HiDPI mode, I know I've done it in the past for
    | external displays, but I haven't been able to get it to work
    | with my 1080p displays using Big Sur. I think this might've
    | been the most useful link I've come across: https://www.reddi
    | t.com/r/hackintosh/comments/jh6pjd/hidpi_on... . If you do
    | manage to get it to work, a toolbar app like ResolutionTab or
    | EasyRes is then a big help for changing between modes.
 
      | kmeisthax wrote:
      | The reason why Apple doesn't do fractional scaling is
      | rounding errors: if you have a design that's aligned to the
      | pixel grid at 1x, it's only guaranteed to remain aligned to
      | that grid if you scale by other integers. If you aren't on
      | the pixel grid, then the layout engine has to round sizes
      | up or down to fit, which is dangerous. You're adding error
      | to layout and then multiplying it by the number of elements
      | being sized.
      | 
      | This gets particularly bad on the web, where a number of
      | different tricks have been employed by browser vendors over
      | the years to avoid rounding errors (see
      | https://www.palantir.net/blog/responsive-design-s-dirty-
      | litt...). If you have, say, a float-column layout with
      | percentage widths, then rounding errors can easily wind up
      | making things either not line up or, worse, _actually
      | overflow their containers for no reason_ , breaking the
      | layout. Throwing non-integer scaling into the mix makes
      | this even worse.
      | 
      | Of course, this is a tractable problem, but it was much
      | easier for Apple to just render-and-downscale from the
      | nearest whole-number factor instead of making the lives of
      | any developer with custom layout engines that much harder.
 
        | chrisseaton wrote:
        | I don't get it - why does alignment matter when pixels
        | are so small you've got no hope of seeing if something is
        | aligned down to such a small measurement or not?
 
  | dfox wrote:
  | They do and in fact both X11 and Windows are capable of using
  | that information to scale font pixel sizes appropriately. In
  | both cases this mostly defaults to off and fixed DPI for UI
  | font layout because the result of non-default display DPI leads
  | to either the result looking wrong/ugly (blurry text, thickness
  | of font strokes disproportionate to other UI elements etc) or
  | even unusable (there is edge case in Win32 UI where one way to
  | create non-resizable dialog-style top-level application window
  | causes its contents to scale with DPI, while size of the window
  | itself does not -> you get UI elements that are cliped outside
  | of the window).
 
  | [deleted]
 
| crazygringo wrote:
| This is a fantastic article and I welcome this conversation.
| 
| As the author states, sizing of fonts and line spacing is
| currently inconsistent across OS's, inconsistent across fonts,
| and inconsistent with other UI elements.
| 
| It's madness. There's no good reason for _any_ of it except
| inertia and lack of forethought.
| 
| The author's proposal to specify _cap height_ is really the only
| reasonable solution I think there is, though I 'd modify it
| slightly:
| 
| - When defining cap height, be clear what the logical obvious
| equivalent in other scripts, e.g. Chinese logogram height
| 
| - Specify cap height in whatever unit other UI elements are
| specified in (the author refers to pixels, but that's arbitrary)
| 
| - Then line height can also be controlled predictably and exactly
| in whatever unit UI elements are specified in
| 
| End result: zero inconsistencies. Text shows up exactly where
| it's meant to no matter what.
| 
| How do we get there? Browsers should adopt it first, with
| something like a CSS "font-cap-size" property that can be used
| instead of (and override) "font-size", as well as something like
| "cap-line-height" overriding "line-height". (And for units,
| recommend using "px", or "rem" ultimately based on a root "px",
| and never touching "pt".)
| 
| Then OSes can migrate similarly with new function
| calls/parameters based on cap height, and also try to phase out
| "pt" sizing in preference of the logical "px" sizing used in the
| rest of interfaces.
| 
| I really think this is the way. I really hope browsers and the
| W3C can consider something like this. It's _decades_ overdue.
 
| fuzzer37 wrote:
| Does anyone really... care? I can't remember ever getting upset
| about font sizing. If it's too small to read make the font
| bigger, if you wanna fit more on the screen make it smaller.
 
| ddevault wrote:
| Something any proposal of this nature tends to be missing is an
| inquiry into the implications for non-English langauges.
 
  | rhabarba wrote:
  | You mean, like German?
 
    | zweifuss wrote:
    | Ss (capital sharp s; added to Unicode in 2008) and even the
    | much older ss (eszett) are not included in all modern fonts.
    | Sometimes Eszett is simulated with a lowercase b sign even
    | today. Often its size doesn't match the ASCII characters.
 
| rgovostes wrote:
| Relatedly, it's really lame that many apps have an "Actual Size"
| zoom option (that's [?]0 to you Mac Safari users) that doesn't
| mean anything. If I create a word processor document with a 11"
| tall page size and zoom it to "Actual Size," I should be able to
| hold a sheet of US Letter up to the screen and have it match
| perfectly, but it is much too small. Displays (except projectors)
| provide physical dimensions via EDID metadata, which can be used
| to compute the correct scaling factor.
 
  | dylan604 wrote:
  | >(that's [?]0 to you Mac Safari users)
  | 
  | Or a lot of other Mac apps. Adobe software has had [?]0 for
  | longer than Safari has exisited followed by [?]-/[?]+ for
  | zooming out/in. FF does it as well
 
| barry27 wrote:
| I thought this was going to be about webapps.
| 
| Surely anyone who has a hankering to do some work just fiddles
| around for a few minutes with their editor until they get
| something they like and then gets on with it and doesnt ever
| think about it again.
 
| Tenal wrote:
| "So user requesting 32 pt font is actually requesting 32 px on
| macOS and 43 px on Windows. But these numbers are still nowhere
| to be seen."
| 
| Is that first sentence poorly written or is this some crazy
| English grammatical clause I have yet to encounter.
 
| lucideer wrote:
| Worth noting this article is discussing OS-level native app font-
| sizes, and is quite separate to discussions of CSS `font-size` on
| the web, for which this "problem" is well-known and `px` is the
| commonly used unit.
| 
| Also:
| 
| > _P.S. VS Code seems to take editor.fontSize value directly in
| pixels. That's a start!_
| 
| I presume this is just the result of VS Code being
| Electron/HTML/CSS, rather than MS deliberately "fixing" the issue
| explicitly for this app.
 
| PaulHoule wrote:
| Font metrics is a super-complex topic.
| 
| I have been digging into old Word documents and it's started to
| dawn on me why Visual Basic "worked" as GUI builder in a time
| when its competitors didn't... The font metric system in Windows
| 95 gave great control, with the ability to position individual
| characters and more configuration choices (e.g. strikethrough)
| than most web browsers today.
| 
| It is way "beyond state of the art" to change the typeface in
| your text editor easily and have it work.
| 
| I have lately been doing a project that involves printing onto
| cards with bitmaps I make with Pillow, and you learn pretty quick
| that there is no such thing as a "unicode font" but instead you
| have to patch up your own "unicode font" by putting together a Ri
| Ben Yu  font with a nice Latin font, and not worrying about other
| languages until I have to print them... The web browser and other
| high-level tools do it automatically but they don't do well.
 
  | spiznnx wrote:
  | The only "unicode font" I know of is the Noto family.
  | 
  | > Noto helps to make the web more beautiful across platforms
  | for all languages. Currently, Noto covers over 30 scripts, and
  | will cover all of Unicode in the future.
  | 
  | https://en.wikipedia.org/wiki/Noto_fonts
 
  | Moru wrote:
  | I have some memories of zooming into a word document and the
  | space occupied by the text was not the same any more... I
  | forget what OS it was running but W95 or earlier is likely.
 
    | jfk13 wrote:
    | Ah, yes... the good ol' days when changing your selected
    | printer driver could also cause Word to reflow your entire
    | document (because it affected the font metrics) and suddenly
    | your carefully-tuned page breaks and figure placements were
    | all wrong.
 
| [deleted]
 
| thayne wrote:
| > Specify cap height, not em square size.
| 
| I'm curious how that would be accomplished. There is nothing that
| requires a font-maker to have a consistent cap height in a font.
 
| JoshTriplett wrote:
| The concept of changing "line height" seems completely broken for
| monospace fonts. Changing the line height of a monospace font
| makes line-drawing characters (lines, boxes, etc) fail to line
| up, either by overlapping or by having gaps between them.
| 
| This gist shows an example of the problem; GitHub's CSS breaks
| this property of monospace fonts:
| https://gist.github.com/joshtriplett/dc2446716999c54cc9a5c48...
 
  | kevincox wrote:
  | I agree, by default I would want to trust the line height of my
  | font designer, just like I trust their letter spacing. I very
  | rarely use multiple fonts on the same line (maybe a monospace
  | font for inline code?).
 
    | JoshTriplett wrote:
    | Right. If you're mixing multiple fonts on the same line, the
    | default should be the maximum line height of the fonts,
    | unless overridden.
 
| grenoire wrote:
| This is also a very big pet peeve of mine, Mr Author. I'm
| honestly more frustrated when I want to have multiple systems
| with different fonts at least look similar in 'space occupied,'
| whereas the lettering being slightly different is just... really
| a whatever matter.
 
| neura wrote:
| I can't be the only person looking at the top of the article,
| thinking "but if you just add the descender and ascender values
| together (the total height of the character, not the block space
| that it occupies), you get almost 32."
| 
| I'm guessing if you even slightly tweak the way the measurements
| are being taken, you'll get 32. even if you just assume "always
| round up", you get 32.
| 
| This is one of the strongest cases of manipulating data by
| providing a bunch of data points to obscure the one point,
| enabling belief in "well, they provide all this data and none of
| it is 32, so they must have a solid point here!"
| 
| This misleading opening really just makes me want to avoid
| reading the rest of the article. I hope there wasn't any real
| information hiding behind that facade. :x
 
  | setr wrote:
  | That's an absurd take... the article's first paragraph is quite
  | clear he's going to tell you exactly where that 32 ran off to,
  | and despite your random arithmetic that happens to find the
  | number with no double-checking whether it works on any other
  | font-size or font (equivalent to finding your birthday in
  | license plates, by arbitrary manipulations of the numbers
  | available), it turns out the 32 is in fact missing from any
  | visible artifact of the font.
 
| kybernetikos wrote:
| Sometimes I want to:
| 
| 1. size based on how big it is in the real world - mm (but
| accurate!)
| 
| 2. size based on user preference - rem?
| 
| 3. size based on how large it appears to the eye - angle
| subtended on the retina (displays that don't know this can assume
| an average distance to the eye different for desktop, mobile,
| jumbotron, etc and work it out from their size)
| 
| 4. size based on the kind of interaction the user will have
| (touch / mouse / eye / point) - some kind of new unit based on
| Fitts law - or should this just be a bunch of special cases?
| 
| 5. size based on proportion of the available space - % vh vw
| 
| I basically never need to size based on some other factors but
| maybe they have a use:
| 
| 1. size based on the minimum resolvable size (i.e. the smallest
| something could be without losing definition). I guess this is
| much more of a concern if you're using a lot of very low
| resolution screens - px (but _actual_ )
| 
| 2. size based on the size of the whole document (including
| document that isn't visible)
| 
| Of course this is all made extra complicated by the fact that
| sometimes containers need to be sized based on concerns bigger
| than them, while sometimes they're sized based on the sizes of
| their contents. And whatever framework you're using is probably
| bad at exposing key pieces of information about e.g. 'how much of
| this text can I get in this width'
| 
| Unfortunately operating systems tend to have little clue about
| how big in the real world their display surfaces are, they are
| even less clueful about how far away the user is. Everything
| seems to be based on an early assumption that what was important
| was the dots on the screen, and as that assumption has proven
| false, instead of attacking the problem in a principled way,
| we've just created scaling fudges on top of pixels to take into
| account higher quality, user 'zoom' preference etc.
| 
| In the hypothetical ideal world, I'd set my IDE editor font
| setting to a subtended angle setting and switch between desktop
| and laptop displays, upgrade the resolution of my screen, or the
| size of my screen and never have to change it.
 
| hyakosm wrote:
| The article points to an interesting UI bug in macOS, text
| alignment in buttons is weird. Cf
| https://grumpy.website/post/0UfwgmMDe
 
  | hyakosm wrote:
  | There is a issue of the incoherence of this behavior in Big
  | Sur. Example: on my screen, in the menubar, vertical alignment
  | of menu items (File, Edit...) is not the same as date & time
  | widget (slightly upper). I don't know if it's because of my
  | non-Retina screen and the lack of optimisation in recent macOS
  | in this regard.
 
  | CharlesW wrote:
  | I'd bet this was done on purpose, since the optical centering
  | of "Revert" is improved by this change.
  | 
  | However, Apple should reduce this optical offset for smaller
  | buttons with relatively larger text, e.g. those in the
  | Bluetooth System Preferences panel.
  | 
  | The side-effect is that all-caps button text is no longer
  | optically-centered, but that's a relatively-rare case other
  | than the "OK" button.
 
| SamBam wrote:
| I have a similar issue on the web.
| 
| I have a library, which adds DOM elements and some text to the
| page. The library _expects_ a certain font to be loaded on the
| webpage. (This is an internal project, so is usually the case,
| but not always.) Obviously there are fall-back fonts if not, but
| those fallback fonts happen to be a different size given the same
| font-size specification, and so everything looks like crap.
| 
| The obvious solution would be to throw away the custom font. But
| if we really want to keep it, the only solution is to load the
| page, _then_ measure the width of the text, _then_ we know if the
| right font is loaded, and if it isn 't then tweak the styles so
| things line up better.
 
| VWWHFSfQ wrote:
| > I am using Sublime Text 4 on macOS
| 
| did I miss when sublime text 4 was released? I'm still on 3
 
  | jd3 wrote:
  | Sublime Text 4 is under private alpha for users with a paid
  | license.
  | 
  | https://gist.github.com/jfcherng/7bf4103ea486d1f67b7970e846b...
 
    | VWWHFSfQ wrote:
    | oh cool
 
    | pier25 wrote:
    | Oh wow had no idea.
    | 
    | Anyone knows what the major changes are compared to v3?
 
  | trinovantes wrote:
  | Oh man, I'm still on 2. I wonder if I can still get discount
  | upgrade from 2->4
 
| amelius wrote:
| Perhaps use a different name for it, so we can have both?
| 
| So e.g.: "font-size" is the old behavior, and "font-height" is
| the new behavior.
| 
| By the way it would also be nice to be able to specify the height
| of lowercase letters, e.g. "font-lowercase-height".
 
| enriquto wrote:
| I long for the time where we used crisp, non-scalable, beautiful
| bitmap fonts. So called "anti-aliased" fonts look always
| irremediably blurry.
 
  | Gualdrapo wrote:
  | I'm still using custom bitmap font for monospaced things (text
  | editor, console and such). No antialiased thing has made me
  | changed my mind - bitmap fonts just look so crisp and sharp and
  | readable.
 
| mcguire wrote:
| "500 years of typography is useless; let's throw everything out!"
| 
| " _Also, I see no reason to honor the so-called "default line-
| height". It's basically a font designer's personal preference,
| imposed on every user of the font in every viewing condition._ "
| 
| Yes, that would be "font design".
 
  | ectopod wrote:
  | I typeset a scanned and ocred copy of an old book. It used a
  | moderately common font except with extremely narrow line
  | spacing. None of the tools I had supported a line spacing
  | narrower than the spacing chosen by the font designer, so I had
  | to create a hacked version of the font to make it work.
  | 
  | Traditionally, the leading was separate from the type. Nowadays
  | it isn't, and that can be a huge pain in the bum.
 
    | JxLS-cpgbe0 wrote:
    | Is this app-development specific? In CSS the font-size and
    | leading are easily decoupled.
 
      | ectopod wrote:
      | I'm not sure what you're asking. As a software developer,
      | supporting negative leading isn't hard, but as an end user
      | (as I was in the example above) that's no help if the
      | software developer hasn't done the work.
 
| jancsika wrote:
| Here's a simple issue that I've never figured out:
| 
| 1. Create an svg
| 
| 2. Draw an svg rectangle in there
| 
| 3. Draw an svg text "Hello World" so that it _fits inside the
| rectangle_.
| 
| 4. Make sure #3 above works regardless of which platform/browser
| you are using.
| 
| Now, I don't see it as a catastrophic problem that I can't
| (easily) automate everything up to step #3. I mean, maybe I
| _could_ by iterating over various sizes inside an offscreen HTML5
| canvas and measuring the results or something. But it isn 't the
| end of the world to, say, just guess and check in a browser until
| I hit the right pixel size.
| 
| Problem is, that rendered result tells me absolutely _nothing_
| about what will render on other platforms. Maybe OSX will eat
| less horizontal width. Hell, maybe some troglodyte who lives deep
| in the guts of Gnu font rendering stack makes a change that
| accordions out the horizontal width so it 's way out of whack
| with Windows and OSX. There's no spec that says a troglodyte
| can't do that. (This all holds for fixed-width fonts the same as
| variable width, btw.)
| 
| It's weird because I see all these SVG frameworks that have demos
| with, say, a graph where text _looks_ to be aligned so that the
| end of a label doesn 't overlap with a vertical line. But there's
| never a caveat given-- if there were, it should be that SVG
| _cannot_ guarantee there won 't be an overlap there, because it
| cannot control the underlying font engine that way. You
| _literally_ have to check with your eye on every platform that
| you want to support[1].
| 
| Edit: clarification
| 
| Edit:
| 
| [1] You can't even simply check for each different font stack--
| you have to check every extant version of that stack. Because
| again, a font stack can make a lot of arbitrary changes from
| version to version.
 
  | jfk13 wrote:
  | Are you explicitly using a linked/embedded font resource, so
  | that you control exactly what font is used to render the text?
  | If not, there's certainly no expectation of uniformity.
 
    | perardi wrote:
    | Agreed. I simply would not expect this to work properly if
    | you don't specify a font. Just compare Times New Roman and
    | Verdana, two fonts that are broadly available, and broadly
    | different in terms of character widths. Verdana will probably
    | bust out of that container.
    | 
    | Maybe if we had container queries, and could set font size as
    | a...container unit? I don't even know what to call it. Like
    | vw and vh units, but relative to a parent container.
 
      | SpaceNugget wrote:
      | would that not just be `%`?
 
  | perardi wrote:
  | Wait, like this?
  | 
  | https://codepen.io/cperardi/pen/VwPmMrM
  | 
  | I would have no expectation _at all_ that would work without
  | specifying a specific font. Fonts just have different
  | horizontal metrics. That doesn 't seem to be a bug, so much as
  | "fonts are different, if you want very specific space-
  | constrained rendering, you should explicitly specify a font,
  | and ideally serve it so all platforms get the exact same font
  | metrics".
 
    | perardi wrote:
    | (Or convert to outlines, and then embed some sort of metadata
    | for accessibility and machine readability. But that's
    | probably overkill.)
 
  | svachalek wrote:
  | That should be easy!
  | 
  | https://www.amazon.com/CSS-Awesome-Mug-Programmer-Developer/...
 
___________________________________________________________________
(page generated 2021-03-30 23:00 UTC)