Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.4.4 font changes no longer apply #2730

Open
Mudbill opened this issue Apr 26, 2024 · 16 comments
Open

3.4.4 font changes no longer apply #2730

Mudbill opened this issue Apr 26, 2024 · 16 comments

Comments

@Mudbill
Copy link

Mudbill commented Apr 26, 2024

Describe the bug

I updated the library from 3.4.2 to 3.4.4 and fontFamily no longer applies. I see that there are font related changes in these updates, so perhaps it is related to that.

To Reproduce

<View>
  <Text>This is normal text</Text>
  <Text style={{ fontFamily: "Helvetica-Bold" }}>This should be bold</Text>
  <Text style={{ fontWeight: 700 }}>This should probably also be bold</Text>
  <Text style={{ fontFamily: "Courier" }}>This should use the Courier font</Text>
</View>

All of the above appear as the same, default Helvetica 400.

Expected behavior

Font changes should apply correctly.

Note: Using fontWeight before 3.4.2 didn't work either. I was only able to set bold font using Helvetica-Bold font family. Maybe Helvetica-Bold is not registered as a bold variant of Helvetica, but rather its own family?

Screenshots

image

Desktop (please complete the following information):

  • OS: macOS
  • Browser: Chrome
  • React-pdf version: 3.4.4
@bdkopen
Copy link
Contributor

bdkopen commented Apr 27, 2024

@Mudbill I located the issue and opened #2731 to address the font family regression. This does not include the fontWeight issue introduced prior to 3.4.2.

@joacub
Copy link

joacub commented Apr 27, 2024

this also breaks registering fonts like SFMono-Semibold.ttf, it never loads pdf get stuck rendering

@bdkopen
Copy link
Contributor

bdkopen commented Apr 27, 2024

this also breaks registering fonts like SFMono-Semibold.ttf, it never loads pdf get stuck rendering

@joacub Can you provide an example that works in 3.4.2 but does not work in 3.4.4? This may not be a related issue. I was able to load a SFMono-Semibold font in both 3.4.2 and 3.4.4 fine. Note that I found many SFMono files are an "otf" extension, not "ttf" like you wrote in your message.

@DaveFPath
Copy link

Last week I updated to 3.4.4, and I got a report from a client saying that all the bold text in all the pdf's were no longer bold. Upon reading up on this thread and others, I believe my problem is the same as this one.

  companyName: {
    fontWeight: "bold",
    fontFamily: "Helvetica-Bold",
  },

When applying this className to the text component, the text is not bold. I have tried variants of the above with no luck.

@joacub
Copy link

joacub commented Apr 30, 2024

this also breaks registering fonts like SFMono-Semibold.ttf, it never loads pdf get stuck rendering

@joacub Can you provide an example that works in 3.4.2 but does not work in 3.4.4? This may not be a related issue. I was able to load a SFMono-Semibold font in both 3.4.2 and 3.4.4 fine. Note that I found many SFMono files are an "otf" extension, not "ttf" like you wrote in your message.

I convert to ttf, the thing is it was working before this update. Don’t know the reason.

@bdkopen
Copy link
Contributor

bdkopen commented May 3, 2024

Last week I updated to 3.4.4, and I got a report from a client saying that all the bold text in all the pdf's were no longer bold. Upon reading up on this thread and others, I believe my problem is the same as this one.

  companyName: {
    fontWeight: "bold",
    fontFamily: "Helvetica-Bold",
  },

When applying this className to the text component, the text is not bold. I have tried variants of the above with no luck.

I agree, this looks like the same issue. The fix in #2731 is merged and should be part of the next release.

I convert to ttf, the thing is it was working before this update. Don’t know the reason.

@joacub I wasn't able to reproduce this issue, but maybe the fix in #2731 will fix it. If the next release doesn't fix the issue, it may be worth making a new issue with a code example to reproduce the problem.

@joacub
Copy link

joacub commented May 3, 2024

Last week I updated to 3.4.4, and I got a report from a client saying that all the bold text in all the pdf's were no longer bold. Upon reading up on this thread and others, I believe my problem is the same as this one.

  companyName: {
    fontWeight: "bold",
    fontFamily: "Helvetica-Bold",
  },

When applying this className to the text component, the text is not bold. I have tried variants of the above with no luck.

I agree, this looks like the same issue. The fix in #2731 is merged and should be part of the next release.

I convert to ttf, the thing is it was working before this update. Don’t know the reason.

@joacub I wasn't able to reproduce this issue, but maybe the fix in #2731 will fix it. If the next release doesn't fix the issue, it may be worth making a new issue with a code example to reproduce the problem.

Yeah, im waiting for the fix to test, it was working but suddenly stop working, font loads but the render get stuck, never finished, no errors no feedback

@Tim0Cc
Copy link

Tim0Cc commented May 8, 2024

We recently react-pdf/renderer to our repo
For some team-members, fontFamily: "Helvetica-Bold", get's applied and the result is indeed bold and Helvetica, for some it isn't, for sure not bold, probably not even Helvetica.

Is there a problem for some devices / OS / Hardware / Chrome-Settings / ... ?

OS: macOS (different M-Chips though)
Browser: Chrome
React-pdf version: ^3.4.2

@bdkopen
Copy link
Contributor

bdkopen commented May 9, 2024

We recently react-pdf/renderer to our repo For some team-members, fontFamily: "Helvetica-Bold", get's applied and the result is indeed bold and Helvetica, for some it isn't, for sure not bold, probably not even Helvetica.

Is there a problem for some devices / OS / Hardware / Chrome-Settings / ... ?

OS: macOS (different M-Chips though) Browser: Chrome React-pdf version: ^3.4.2

@Tim0Cc the likely issue is that some of your team is running 3.4.2 while others are running 3.4.4 (the version with the regression). The ^ allows minor upgrades to the packages. If everyone on your team re-install dependencies then everyone should be able to reproduce the issue.

@Tim0Cc
Copy link

Tim0Cc commented May 14, 2024

we made it work (somehow).
(thx @bdkopen for your hint)

we downgraded to "@react-pdf/renderer": "3.1.9"
needed to use npm i instaed of yarn (maybe issues with yarn ???) and use one package-lock.json file which worked (sometimes it didn't, but once it worked for one team-member, using the same package-lock.json worked for everyone)

@Mudbill
Copy link
Author

Mudbill commented May 14, 2024

@Tim0Cc if you lock the version with either yarn or npm, then you should also re-use the same package manager to unlock or change it. Mixing yarn and npm means both of them will try to lock package versions, and will likely end up locking different versions, causing inconsistencies across installs. If package-lock.json is what you use now, you might want to delete yarn.lock.
By the way, it should be sufficient to downgrade to 3.4.2 instead of all the way to 3.1.9 to fix the bold issue.

@Tim0Cc
Copy link

Tim0Cc commented May 15, 2024

@Mudbill unfortunatelly 3.4.2 doesn't render bold.
we were previously using yarn consistently ... switching to npm for installation did the trick to get the fonts bold on v3.1.9 ... so from now on npm until the issue is fixed ...

@lecstor
Copy link

lecstor commented May 21, 2024

It seems like there are multiple issues related to font rendering. I've managed to get some form of bolding working by copying the fonts and setup from the fontWeights example in the repo and building and installing the main branch locally. Unfortunately the behaviour seems rather esoteric to me.

For instance the following markup results in two lines, one regular, and one bold, rather than the expected alternating regular/bold sentences.

<View>
  <Text>
    Ut irure qui nisi.
    <Text style={{ fontWeight: 700, fontFamily: "Roboto" }}>
      Tempor enim irure excepteur.
    </Text>{" "}
    Nulla aliquip est excepteur.
  </Text>
  <Text>
    <Text style={{ fontWeight: 700, fontFamily: "Roboto" }}>
      Proident aliquip ea ullamco.
    </Text>{" "}
    Adipisicing ullamco sit in.
  </Text>
</View>
Screenshot 2024-05-21 at 11 09 29 AM

Another example is when you wrap the fontWeights example in Text tags it eliminates any bolding.

const MyDoc = () => {
  return (
    <Page style={styles.body}>
      <Text>
        <Text style={styles.regular}>Regular text</Text>
        <Text style={styles.medium}>Medium text</Text>
        <Text style={styles.bold}>Bold text</Text>
        <Text style={styles.black}>Black text</Text>
      </Text>
    </Page>
  );
};
Screenshot 2024-05-21 at 10 55 41 AM

@bdkopen
Copy link
Contributor

bdkopen commented May 21, 2024

@lecstor I believe the issues you are describing are fixed in #2747.

@alexstanbury
Copy link

I tried adding the fix in #2747 and still can't get bold font weight to work.

@Hatko
Copy link

Hatko commented May 22, 2024

@alexstanbury had the same. Resolved it by specifying the version of @react-pdf/layout

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants