Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitefb03d8

Browse files
authored
feat: Support rendering 'Oblique' fonts (#236)
1 parentdc2ef9c commitefb03d8

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

‎src/Fonts/FontRegistry.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function addFont(string $filePath): void
1515
$this->fontFiles[] =$ttfFile;
1616
}
1717

18-
publicfunctionfindMatchingFont(?string$family,bool$italic,float$weight): ?FontFile
18+
publicfunctionfindMatchingFont(?string$family,?string$style,float$weight): ?FontFile
1919
{
2020
if (empty($this->fontFiles)) {
2121
returnnull;
@@ -32,9 +32,19 @@ public function findMatchingFont(?string $family, bool $italic, float $weight):
3232
}
3333
}
3434

35-
// Attempt to find the closest-weight match with correct family and italicness.
36-
$match =$this->closestMatchBasedOnWeight(function (FontFile$font)use ($family,$anyFontFamily,$italic) {
37-
return ($anyFontFamily ||$font->getFamily() ===$family) &&$font->isItalic() ===$italic;
35+
// Attempt to find the closest-weight match with correct family and cursiveness.
36+
$match =$this->closestMatchBasedOnWeight(function (FontFile$font)use ($family,$anyFontFamily,$style) {
37+
$result = ($anyFontFamily ||$font->getFamily() ===$family);
38+
$isItalic =$font->isItalic();
39+
$isOblique =$font->isOblique();
40+
switch ($style) {
41+
case'italic':
42+
return$result && ($isItalic ||$isOblique);
43+
case'oblique':
44+
return$result && ($isOblique ||$isItalic);
45+
default:
46+
return$result && !($isItalic ||$isOblique);
47+
}
3848
},$weight);
3949

4050
// Attempt to match just based on the font family.

‎src/Fonts/TrueTypeFontFile.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,23 @@ public function getFamily(): string
4444

4545
publicfunctiongetWeight():float
4646
{
47-
return$this->weightClass ?? ($this->subfamily ==='Bold' ||$this->subfamily ==='Bold Italic' ?700 :400);
47+
return$this->weightClass ?? (
48+
$this->subfamily ==='Bold' ||
49+
$this->subfamily ==='Bold Italic' ||
50+
$this->subfamily ==='Bold Oblique' ?700 :400
51+
);
4852
}
4953

5054
publicfunctionisItalic():bool
5155
{
5256
return$this->subfamily ==='Italic' ||$this->subfamily ==='Bold Italic';
5357
}
5458

59+
publicfunctionisOblique():bool
60+
{
61+
return$this->subfamily ==='Oblique' ||$this->subfamily ==='Bold Oblique';
62+
}
63+
5564
publicfunctionisMonospace():bool
5665
{
5766
// TODO implement detection for monospace fonts

‎src/Rasterization/Renderers/TextRenderer.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ protected function prepareRenderParams(array $options, Transform $transform, ?Fo
3333

3434
$fontPath =null;
3535
if (isset($fontRegistry)) {
36-
$isItalic =$options['fontStyle'] ==='italic' ||$options['fontStyle'] ==='oblique';
3736
$weight =self::resolveFontWeight($options['fontWeight']);
38-
$matchingFont =$fontRegistry->findMatchingFont($options['fontFamily'],$isItalic,$weight);
37+
$matchingFont =$fontRegistry->findMatchingFont($options['fontFamily'],$options['fontStyle'],$weight);
3938
if ($matchingFont !==null) {
4039
$fontPath =$matchingFont->getPath();
4140
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp