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

Safari blurry icons #41

Open
kostyukdg opened this issue Sep 17, 2021 · 5 comments
Open

Safari blurry icons #41

kostyukdg opened this issue Sep 17, 2021 · 5 comments
Labels
bug Something isn't working good first issue Good for newcomers

Comments

@kostyukdg
Copy link

kostyukdg commented Sep 17, 2021

Hi,

Your library is awesome. It works perfectly on any device except for safari(iOS and desktop). The flags are blurry.

device screenshot

It happens when you load an image from url
<img src="https://hatscripts.github.io/circle-flags/flags/br.svg" width="48">

I found solutions but looks tricky
<object type="image/svg+xml" data={path} />

It only affects icons from this library. That's why I guess it has some problems with svg structure.

Thanks again for your work!

@HatScripts HatScripts added bug Something isn't working good first issue Good for newcomers labels May 4, 2022
@HatScripts
Copy link
Owner

Hi @kostyukdg, I'm glad you like the library. Could you please elaborate or provide more screenshots? Unless I am missing something, the screenshot you provided doesn't appear to show obviously blurry flag icons. Thanks!

@waldyrious
Copy link
Collaborator

waldyrious commented May 4, 2022

I think he may mean the borders around the icons:

blurry-icons

Maybe Safari is not able to properly render the alpha masks (#11/#18)? I wonder if using <clipPath> instead of <mask> might work better. After all, we only need a binary mask (which is what clipPath provides), not a gradual transparency as mask allows (and we're not using, since the mask path we're using is filled with solid white).

In #18, @climech said that

<mask> was chosen over <clipPath> because the former results in slightly smaller file sizes (exactly 1 byte smaller 🙃).

So if <clipPath> is better supported by renderers (to be determined!), maybe the extra 1 byte would be an acceptable workaround.

@HatScripts
Copy link
Owner

This should be fixed now: https://github.com/HatScripts/circle-flags/releases/tag/v2.5.0

Replace mask with border-radius across all flags:

<svg ...><mask id="a"><circle cx="256" cy="256" r="256" fill="#fff"/></mask><g mask="url(#a)">...</g></svg>

...becomes:

<svg ... style="border-radius:50%">...</svg>

@waldyrious
Copy link
Collaborator

waldyrious commented May 14, 2022

Nice, @HatScripts! Out of curiosity, why did you go with border-radius instead of clipPath? Smaller files?

Edit: either way, it's nice that it was done via CSS, since now the clipping of the flags to different shapes can be done without tweaking the SVG — see #51!

@waldyrious
Copy link
Collaborator

Cross-referencing #52 and #53 for future reference. It seems like it might be a good idea to pick (and document) the list of platforms/software we want to target and guarantee proper rendering.

In any case, I'd say that, assuming we want to support the platforms where border-radius doesn't work, it's preferable to have blurry borders in Safari (which might even be solved with using a <clipPath> instead of <mask>), than non-round icons at all elsewhere.

royisy added a commit to royisy/trilingo that referenced this issue Jun 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants