php / php/php-src

Inconsistent Results with imagettfbbox

Offen
#9,073 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Extension: gd Status: Needs Triage
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

The following code (run in a directory containing FreeMono.ttf) gives different results on Linux vs Windows:

<?php
$fontFileName = realpath(__DIR__ . DIRECTORY_SEPARATOR . 'FreeMono.ttf');
var_dump(md5_file($fontFileName)); // to show using same file
var_dump(imagettfbbox(10.0, 0.0, $fontFileName, 'Hello'));

Resulted in this output on Windows:

C:\git\ExactFont\testfont.php:3:
string(32) "ec48e99df5d46035b62ef0d825b43336"
C:\git\ExactFont\testfont.php:4:
array(8) {
  [0] =>
  int(0)
  [1] =>
  int(0)
  [2] =>
  int(39)
  [3] =>
  int(0)
  [4] =>
  int(39)
  [5] =>
  int(-9)
  [6] =>
  int(0)
  [7] =>
  int(-9)
}

But I got this output on a Linux Ubuntu system:

C:\git\ExactFont\testfont.php:3:
string(32) "ec48e99df5d46035b62ef0d825b43336"
C:\git\ExactFont\testfont.php:4:
array(8) {
  [0] =>
  int(0)
  [1] =>
  int(1)
  [2] =>
  int(41)
  [3] =>
  int(1)
  [4] =>
  int(41)
  [5] =>
  int(-9)
  [6] =>
  int(0)
  [7] =>
  int(-9)
}

PHP Version

7.4.3 and 8.1.8 on Linux; 7.4.26 and 8.0.13 and 8.1.0 on Windows

Operating System

Ubuntu 20.04.4 LTS; Windows 10 Enterprise 19044.1826

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das bereitgestellte imagettfbbox-Beispiel mit FreeMono.ttf auf den aufgeführten Ubuntu- und Windows-Versionen auszuführen und dabei den übereinstimmenden md5_file-Hash sowie die unterschiedlichen Bounding-Box-Arrays zu bestätigen. Untersuche das plattformspezifische Ergebnis und definiere „done“ als das Erklären oder Korrigieren der Abweichung unter Beibehaltung der gemeldeten Reproduktion.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
computer-graphics
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.