Entwickler-Ecke

Wünsche, Anregungen & Kritik - Syntax-Highlighter verrutscht


FinnO - Mi 04.01.12 01:52
Titel: Syntax-Highlighter verrutscht
Moin,

mir ist beim Antworten gerade aufgefallen, dass wenn man unten in der sog. "Thema-Überblick"-Box die Quelltexte ausklappt, die Zeilen in der Spalte "Zeile" nicht mit den Zeilen des Quelltextes Übereinstimmen. Sieht recht nutzlos aus.

zeileverrutscht

LG


Martok - Mi 04.01.12 02:05

SUUUPER, jetzt holt Firefox die alten Darstellungsbugs vom IE7 wieder aus der Schublade oder was?

Lass mich raten, das wird pro Zeile die etwas fettgedrucktes enthält "falscher"?


Boldar - Mi 04.01.12 04:59

Hi,
Also ich bin hier mit FF 9.0.1 online, gerade frisch installiert ohne jegliche Addons, und der Fehler tritt hier definitiv nicht auf, auch nicht bei längeren Quelltexten. BTW ist im Screen der Code zu klein, die Markierte Zeile mit procedure ist bei mir schön brav Nummer 53 (Ich denke doch es geht um dieses Topic [http://www.delphi-forum.de/viewtopic.php?p=656760#656760]). Deshalt
Ich kann den Fehler also nicht nachvollziehen.
mfg Boldar


jaenicke - Mi 04.01.12 09:27

Du hast aber auch in der Suche beim Ausklappen in der Beitragsansicht geschaut? Dort sieht es bei mir im FF zu Hause genauso aus. (Welche FF Version weiß ich nicht.)

Tja, soweit ist es gekommen:
Jetzt kopiert der FF nicht nur das Aussehen des Browsers nahezu 1:1, sondern auch das der Webseiten. Vielleicht wollte man da mal von nem anderen Browser kopieren. :mrgreen:


baka0815 - Mi 04.01.12 10:53

Kann es nicht vielleicht einfach daran liegen, dass bei dir eine andere Schriftart verwendet wird, die etwas anders skaliert?


FinnO - Mi 04.01.12 11:31

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Lass mich raten, das wird pro Zeile die etwas fettgedrucktes enthält "falscher"?


Indeed.


jaenicke - Mi 04.01.12 11:38

FF 10 zeigt das Verhalten übrigens ebenfalls.


baka0815 - Mi 04.01.12 13:44

FF 9.0.1 zeigt das Verhalten bei mir nicht, daher meine Vermutung bzgl. der Schrift.

Evtl. auch ein installiertes Add-On?


FinnO - Mi 04.01.12 14:21

Moin,

habe keine AddOns, keine Schrift verändert.

LG


jaenicke - Mi 04.01.12 14:30

user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
FF 9.0.1 zeigt das Verhalten bei mir nicht, daher meine Vermutung bzgl. der Schrift.
Dann zeig doch einfach mal einen Screenshot wie es bei dir aussieht. ;-)
Dann lässt sich das ja vergleichen.


Boldar - Mi 04.01.12 15:27

Also hier siehts so aus:
Moderiert von user profile iconKha: Überbreites Bild entfernt, s. Anhang


jaenicke - Mi 04.01.12 16:30

In dem Screenshot bist du ja an einer anderen Stelle. Bei mir ist es in der Suche so.

// EDIT:
Und in der von dir geposteten Topicansicht auch sehe ich hier. Aber das war zu Hause nicht so.


Martok - Mi 04.01.12 17:00

Hat jemand der Betroffenen ein Firebug da?
Dann deaktiviert mal in common.css, Regel .codekey (Zeile 197) die "font-size: 12px" Angabe.

Wird's dann besser? Wenn ja, haben sie zwar keinen IE-Bug kopiert, sind aber dafür die ersten die diesen Bug (bzw dessen IE-Fix) nicht verstehen, was dann im Endeffekt genauso falsch ist ;)


jaenicke - Mi 04.01.12 18:01

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Dann deaktiviert mal in common.css, Regel .codekey (Zeile 197) die "font-size: 12px" Angabe.

Wird's dann besser?
Ja, dann sieht es korrekt aus. ;-)


Martok - Mi 04.01.12 21:00

Okay, dann muss zu der IE7-Browserweiche noch eine Fx9-Browserweiche.

Hintergrund: im IE7 werden span-Tags, die italic sind ein Pixel höher als die Zeile drumrum. So ziemlich alle Highlighter generieren für die daher eine Höhe die exakt ein Pixel kleiner ist als "normaler" Text. Richtige Browser haben das bisher ignoriert/weg-overflowed/wasauchimmer.
Firefox nimmt das jetzt wörtlich und macht die ein Pixel kleiner, interessanterweise auch bold. Das bricht uns hier das Genick.

Ich werd mir den mal beschaffen und einen Testcase bauen, aber ich garantier für nix.
Spaß am Rande: in Fx9 schwanken die Zeilenhöhen zwischen 14px und 15px, in allen anderen Browsern sind sie konstant 16px :wall:


EDIT: äh wie jetzt?
ScreenShot-5059

Also ne Extension? *grübel*
Der Affe ists nicht, sagt user profile iconFinnO


Regan - Mi 04.01.12 21:46

Gerade Firefox neu heruntergeladen und installiert. Erste Seite aufgerufen:
ff

Edit: ich hatte ihn vorher noch nie auf dem System (Windows 7 Home Premium) installiert.


Martok - Mi 04.01.12 22:01

Welches OS haben die betroffenen? Bisher stammen alle Meldungen von Win7 x64.

Also: bitte mal testen, ob das bei euch geht und mit User-Agent-String und ggf Edgemonkey und dem Wert der Einstellung Design->"Codeblöcke als monospace anzeigen" zurückmelden!


For your convenience: some sourcecode
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
          A:= NextR(i);
          if Tokens[A].Kind=tokEmpty then
            TE_FunctionCall(tmp.GetObject).Arguments:= nil
          else
            TE_FunctionCall(tmp.GetObject).Arguments:= Tokens[A].Expr;
          Tokens[A].Expr:= nil;
          Tokens[a].Kind:= tokVoid;
          Tokens[i].Expr:= tmp;
        end;
      end// Zeile 10

    //finally, operators
    // Note: this wastes some extra iterations per Prio-Class, just ignore that, okay?
    for A:= 0 to high(Expressions) do begin
      for i:= L to R do
        if (Tokens[i].Kind=tokOperator) and
           (Expressions[Tokens[i].OpIdx].P=Expressions[A].P) then begin
          eid:= Tokens[i].OpIdx;
          rr:= NextR(i);
          ll:= NextL(i); // Zeile 20

          if rr<0 then
            raise ESyntaxError.CreateFmt('Position %d: Operator has no RHS',[Tokens[i].Pos]);

          if Tokens[rr].Kind<>tokExpression then
            raise ESyntaxError.CreateFmt('Position %d: expected expression, found %s',[Tokens[rr].Pos, Tokens[rr].Value]);
 // Zeile 27
          if (Expressions[eid].Cls = TE_Subtraction) and
             ((ll<0or (Tokens[ll].Kind<>tokExpression)) then begin
            tmp:= TE_Negation.Create;//Zeile 30
            tmp.RHS:= Tokens[rr].Expr;
          end else begin
            tmp:= Expressions[eid].Cls.Create;

            tmp.RHS:= Tokens[rr].Expr;
            if not Expressions[eid].Unary then begin
              if ll<0 then
                raise ESyntaxError.CreateFmt('Position %d: Operator has no LHS',[Tokens[i].Pos]);
              if Tokens[ll].Kind<>tokExpression then
                raise ESyntaxError.CreateFmt('Position %d: expected expression, found %s',[Tokens[ll].Pos, Tokens[ll].Value]); //Zeile 40
              tmp.LHS:= Tokens[ll].Expr;
1           end;
2         end;
3       end;
4     end;
5   end;




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
KeinHighlighter;
end
end
  end
  end
    end
    end
  end
  end
  end
end//10
end
end
end
end
end
end
end
end
end
end//20
end
end
end
end
end
end
end
end
end
end//30
end
end
end
end
end
end
end
end
end
end//40
end
end
end
end
end
end
end
end
end
end //50


FinnO - Mi 04.01.12 22:03

Ich muss dich enttäuschen, aber dein Code passt.

Also ich habe mal verschiedene Zeichenfolgen am Start.

komp

Ferner:


Delphi-Quelltext
1:
2:
3:
end
    end
        end


Delphi-Quelltext
1:
2:
3:
end
end
end


Sieht so aus:

Passt


Regan - Mi 04.01.12 22:10

Seconded.
Ich habe gerade mal den Button neben den "Code aufklappen"-Button gedrückt: Die Größe verändert sich nicht. Es kann also nicht an der Scrollbox liegen.
64-bit Windows.

Edit: habe keinen Edgemonkey installiert und will es eigentlich auch nicht installieren, da der FF nachher wieder runterfliegt.
Edi2: Es kann nicht an der Länge liegen. Bei kleineren "Längen" wird der Fehler bloß nicht so offensichtlich.
Edit3: User-Agent: Mozilla/5.0 Windows NT 6.1 WOW64 rv 9.0.1 Gecko/20100101 Firefox/9.0.1


Yogu - Mi 04.01.12 23:18

Ich hab Firefox 10 Beta 32 Bit auf 64-Bit-Win7, und sehe weder in diesem Topic [http://www.delphi-forum.de/viewtopic.php?p=656760#656760], noch in den hier geposteten Codes einen Versatz. Bei allen Textelementen (fett, kursiv oder normal) gibt Firebug eine Höhe von 16 Pixeln an. Ohne den 12px-Workaround für fetten und kursiven Text wären es auch 16 Pixel Höhe. Also eigentlich alles so, wie du es vom Firefox erwartet hast.

User Agent:

Quelltext
1:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0                    


jaenicke - Mi 04.01.12 23:28

Mit Windows XP mit FF9 sieht bei mir alles korrekt aus. Dein letzter Codeblock hier sieht auch unter Windows 7 x64 korrekt aus.


Martok - Do 05.01.12 04:58

Damit haben wir 2 die das reproduzieren können und 2 die das nicht können. Schön :roll:

Also, um das auch noch auszuschließen hier mal Testdateien, die direkt eine TTF vom Server laden.
Windows-7-Fonts [http://www.martoks-place.de/files/courier/test.php?w7]
Windows-XP-Fonts [http://www.martoks-place.de/files/courier/test.php?xp]
Native Fonts [http://www.martoks-place.de/files/courier/test.php]

Was passiert?

Das ist echt ein mysteriöses Problem. Man könnte das ja fixen, indem man einfach eine line-height von 16px festnagelt. Geht aber irgendwie nicht :roll:

FinnO hat mich da aber vorhin bei eingehendem Testen auf was gebracht... was passiert hier?
Windows-7-Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?w7&fix1]
Windows-XP-Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?xp&fix1]
Native Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?fix1]


Teekeks - Do 05.01.12 07:13

Um das ganze noch lustiger zu machen:
OS: OpenSUSE 11.4
Browser: FF 7.0.1
UND Chrome 12.0.742.124
und Konqueror 4.6.00


jaenicke - Do 05.01.12 07:32

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Was passiert?
Alle 6 Links sehen auch unter Win 7 x64 korrekt aus.
// EDIT:
Abgesehen davon, dass die Kommentare um eine Zeile verschoben sind, wohl weil die erste Zeile "außer Konkurrenz" drin steht. :D

user profile iconTeekeks hat folgendes geschrieben Zum zitierten Posting springen:
Um das ganze noch lustiger zu machen:
OS: OpenSUSE 11.4
Browser: FF 7.0.1
Mit Firefox bis Version 8 tritt das Problem auch nicht auf, erst Version 9 und 10 zeigen das Verhalten.


Teekeks - Do 05.01.12 07:52

Ist aber Version 7 und es tritt das Problem auf :)


jaenicke - Do 05.01.12 08:19

Oh, stimmt, ich habe die Kommentare nicht gesehen. Am Ende ist es ja wieder bündig. ;-)


Regan - Do 05.01.12 09:32

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Damit haben wir 2 die das reproduzieren können und 2 die das nicht können. Schön :roll:

Also, um das auch noch auszuschließen hier mal Testdateien, die direkt eine TTF vom Server laden.
Windows-7-Fonts [http://www.martoks-place.de/files/courier/test.php?w7]
Windows-XP-Fonts [http://www.martoks-place.de/files/courier/test.php?xp]
Native Fonts [http://www.martoks-place.de/files/courier/test.php]

Was passiert?

Das ist echt ein mysteriöses Problem. Man könnte das ja fixen, indem man einfach eine line-height von 16px festnagelt. Geht aber irgendwie nicht :roll:

FinnO hat mich da aber vorhin bei eingehendem Testen auf was gebracht... was passiert hier?
Windows-7-Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?w7&fix1]
Windows-XP-Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?xp&fix1]
Native Fonts mit "Fix" [http://www.martoks-place.de/files/courier/test.php?fix1]

Sorry für das Vollzitat. Brauchte eine Referenz.

Die sehen alle gut aus und zeigen keine Fehler an.


baka0815 - Do 05.01.12 12:55

Bei mir sieht das auch alles gut aus, nutze Fx9.0.1 unter WinXP.
Keiner der angegebenen Links zeigt ein Problem.

Ich sag ja: Fonts... :)


FinnO - Do 05.01.12 14:46

Passt bei mir auch alles, bis auf die Tatsache, dass unten Leerraum bleibt. Kann aber sein, dass das gewollt ist.

LG :)


Martok - Do 05.01.12 22:01

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
// EDIT:
Abgesehen davon, dass die Kommentare um eine Zeile verschoben sind, wohl weil die erste Zeile "außer Konkurrenz" drin steht. :D
Ja, ich failte. Ich weiß :P Habs mal behoben.

user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
Passt bei mir auch alles, bis auf die Tatsache, dass unten Leerraum bleibt. Kann aber sein, dass das gewollt ist.
Mehr oder weniger, da ist noch ein \n im <pre> zu viel.

Okay, es liegt also nicht an:

Nach Occams Razor bleibt nur eins übrig: etwas auf der Seite ist das Problem.

Es kann nicht das CSS sein, das hab ich 1:1 geguttenbergt, trotzdem verhält sich meine Seite anders.
Und das führt uns zu einem einzigen Unterschied: mein Testseite ist Standards Compliant, das DF ist Quirksmode [http://www.quirksmode.org/css/quirksmode.html].

Bleibt noch ein Test zum verifizieren. Im QM funktioniert "Font Einbinden Per CSS" nicht mehr, also nur noch die native Version (also exakt wie DF).
Normal [http://www.martoks-place.de/files/courier/test.php?quirks]
Mit Testfix [http://www.martoks-place.de/files/courier/test.php?quirks&fix1]

Wenn sich hier was konklusives ergibt, kann man ja mal suchen wo der Pfeffer im Hasen liegt.

(PS: was ihr sehen solltet: ohne Fix das gleiche wie hier (nämlich Fehler), mit Fix hoffentlich was anderes)


EDIT: Halt, eins hab ich noch! Habt ihr ClearType (heißt doch so oder :gruebel:) aktiviert/deaktiviert? Das ist auf W7 x64 anders als auf x86, wenn ich mich richtig erinnere! Und auf Linux sowieso, da ist es immer aktiv. Sowas kann die Schrifthöhe durchaus verleiern.


jaenicke - Do 05.01.12 22:12

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Normal [http://www.martoks-place.de/files/courier/test.php?quirks]
Mit Testfix [http://www.martoks-place.de/files/courier/test.php?quirks&fix1]
Beides sieht falsch aus im FF.

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Browser (auch wenns erst im Fx9 ist, Chrome und Konqueror machens auch)
Bei mir passiert es bei keinem anderen Browser (getestet IE9, Opera 11.6, Konquerer 4.7, Chrome 16). Weder unter Windows XP, Windows 7, Debian oder Ubuntu. :nixweiss:
// EDIT:
Ok, aber dafür mit Opera 8 unter XP und Firefox 3.6 unter Ubuntu.


Martok - Do 05.01.12 22:52

Und wie siehts mit ClearType aus?

Ich teste hier mit PM3.6, PM 8, Fx 9, Opera 11, IE6 (just 'cause), alles unter XPx86. Das geht wunderbar. 64bit-Windowsen hab ich hier nicht, und das Linux auf'm Server hat naheliegenderweise keinen X-Server :P

Okay, also im QuirksMode isses immer falsch. Das ist gut (vermutlich).

@jaenicke, kannst du nochmal alle Browser die du hast drauf loslassen, den 2. Absatz copy/pasten und dranschreiben ob es passt? http://martoks-place.de/files/courier/test.php http://martoks-place.de/files/courier/test.php?quirks
Ich werd das mal durch Browsershots jagen, vermute aber dass du schneller bist :P


jaenicke - Do 05.01.12 23:15

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Ich werd das mal durch Browsershots jagen
Darüber habe ich die beiden im Edit genannten gefunden, die auch nicht gehen. ;-)

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Und wie siehts mit ClearType aus?
Abgesehen davon, dass es ohne Sch*** aussieht, ändert sich nichts, es sieht auch ohne falsch aus.

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
@jaenicke, kannst du nochmal alle Browser die du hast drauf loslassen, den 2. Absatz copy/pasten und dranschreiben ob es passt?
Ich schaue mal, ob ich da heute noch zu komme, sonst morgen. ;-)


Regan - Do 05.01.12 23:36

Beide sehen falsch aus. ClearType ist aktiv. Es sind zu viele Schritte, das zu deaktivieren :|

Edit: Ich kann aber beide richtig aussehen lassen, indem ich die Schriftgröße der Zeilennummern auf 12px festsetze.


Martok - Fr 06.01.12 00:57

user profile iconRegan war im falschen Beitrag, via Skype haben wir meinen Verdacht bestätigt.

Einziger Grund für den Fehler ist Quirks Mode auf x64 ODER Linux, ist also konsistent. Warum das ein Fehlergrund ist will ich gar nicht genau wissen, aber ich denke da lässt sich was finden. Vielleicht ein Rundungsproblem vom Canvas oder so.

Das Problem ist aber, dass ich nicht einfach auf den Standards Compliant Mode stellen kann. Das ändert so viel im Rendering, dass muss man extrem testen.

Heißt also: ich werd mir die quirks.css genau angucken und versuchen rauszubekommen was anders ist. Vielleicht findet sich ja was.


Martok - Fr 06.01.12 05:51

Ich antworte mir mal selbst, neue Informationen und so.

Browsershots ist fertig (okay, habs Refreshen irgendwann vergessen, aber das Ergebnis ist eindeutig). Hier das Ergebnis [http://martoks-place.de/files/courier/browsers.pdf] (Rohdaten [http://martoks-place.de/files/courier/browsers.ods])

... aand I came up with this: http://martoks-place.de/files/courier/test.php?quirks&fix2

Lustigerweise war das mein erster Ansatz, und in einem Versuch mit Firebug an user profile iconFinnO's Firefox via TeamViewer hat das nicht funktioniert. Für Opera scheint's aber zu reichen. Also, geht das?


jaenicke - Fr 06.01.12 07:02

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Lustigerweise war das mein erster Ansatz, und in einem Versuch mit Firebug an user profile iconFinnO's Firefox via TeamViewer hat das nicht funktioniert. Für Opera scheint's aber zu reichen. Also, geht das?
Es sieht auf den ersten Zeilen richtig aus, aber eine winzige Verschiebung gibt es, so dass es am Ende so aussieht (FF9, Win7 x64):

FF9_Win7_Fix2


Martok - Fr 06.01.12 10:55

Dann noch ein Vorschlag ;)

http://martoks-place.de/files/courier/test.php?quirks&fix2&fix1

Jetzt neu, mit vertical-align: top für alles was bunt ist. Dann fällt das eigentlich gar nicht existierende Padding unten raus... Und, völlig unerklärlich: background: inherit, weil nämlich vertical-align den Hintergrund zurücksetzt. Ist ja klar :roll:

Getestet mit:
-Opera 11 + PM 3.6 auf XP32
-Firefox 8 + reconq 0.7 (Webkit 533.3) auf Kubuntu 11.04 i686 (VM)

In Firefox (Linux) und Webkit haben so zwar mehrzeilige Highlights eine Lücke zwischen den Zeilen (in Opera nicht), aber das wär mir dann grad mal egal. Meistens markiert man ja eh nur Zeilen(teile) ;)


jaenicke - Fr 06.01.12 12:13

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Dann noch ein Vorschlag ;)

http://martoks-place.de/files/courier/test.php?quirks&fix2&fix1
Ja, der sieht korrekt aus mit FF 9 unter Win7 x64. Mehr kann ich hier auf Arbeit grad nicht testen. ;-)


baka0815 - Fr 06.01.12 12:21

Sieht auch unter WinXP noch gut aus (Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1), also zumindest keine Regression.


FinnO - Fr 06.01.12 18:43

Letzter Vorschlag passt, bei dem davor kann ich user profile iconjaenicke nur bestätigen.