Ich glaube im Netz gibt es mehr Texte in denen die Typografie, speziell die Nutzung von Sonderzeichen, falsch gemacht wird, als Texte in denen sie richtig gemacht wird. Ich finds schade, und in gewisser Weise auch irgendwie ekelig ;). Um dem ein wenig entgegen zu wirken habe ich mir eine kleine (sehr primitive, aber funktionierende) Funktion in mein kleines, im Bau befindlichen CMS eingebaut.
Angeregt durch ein Thema im Webkrautsforumboard, möchte ich dieses hier nun einfach mal zur Verfügung stellen, um den 10 häufigsten Publishing-Satzfehlern (und mehr …) immerhin ein kleines bisschen entgegen zu wirken.
function corr_q($text, $mode='deutsch') {
switch($mode) {
case 'deutsch':
$text = str_replace(' "',' „',$text);
$text = str_replace('" ','“ ',$text);
break;
case 'de_guillemets':
$text = str_replace(' "',' »',$text);
$text = str_replace('" ','« ',$text);
break;
case 'fr_guillemets':
$text = str_replace(' "',' « ',$text);
$text = str_replace('" ',' » ',$text);
break;
case 'englisch':
$text = str_replace('" ','” ',$text);
$text = str_replace(' "',' “',$text);
break;
}
$text = str_replace('.....','…',$text);
$text = str_replace('....','…',$text);
$text = str_replace('...','…',$text);
$text = str_replace("'",'’',$text);
$text = str_replace(' & ',' & ',$text);
$text = str_replace("--",'–',$text);
$text = str_replace("---",'—',$text);
return $text;
}
Der Funktionsaufruf lautet ganz einfach
<? echo corr_q($text); ?>
oder optional mit den Sprachparametern
<? echo corr_q($text,'englisch'); ?>
Ich habe mich dabei auf die (wie ich denke) vier gängigsten Varianten, nämlich den französischen Guillemets (fr_guillemets), den deutschen Guillemets (de_guillemets), den englischen 66/99 (englisch), und den normalen deutschen beschränkt.
Zusätzlich werden unabhängig von der gewählten Sprache werden Hochkommas (SHIFT+#) in korrekte Apostrophen ( ’ ), Punktpunktpunkte in korrekte Fortführungszeichen (…), 2 bzw 3 Bindestriche in Folge in n- bzw m-dashs, also Halbgeviert und Geviertstrich, und Kaufmanns-Unds in korrekt maskierte Ampersands (&) umgewandelt.
Wer möchte kann sich die Funktion natürlich so umschreiben, das mittels preg_match und lang-Attribut jeweils die richtigen Anführungszeichen gesetzt werden, war in meinem Fall jedoch nicht nötig.