• Skip to main content
  • Skip to footer

Phil Gons

Bible & Tech

  • About
  • Contact
  • Categories
    • Audio
    • Books
    • Deals
    • Exegesis
    • Meditations
    • Miscellany
    • Reviews
    • Technology
    • Theology
    • Videos
  • Resources
    • Bibliographies
    • Book Reviews
    • Files
    • Messages
    • Other Works
    • Publications
    • Union with Christ

How to Use Greek and Hebrew in Blog Posts

April 19, 2010 by Phil Gons

Greek Manuscript

If you use Greek and Hebrew in your blog posts, here’s a tip that will help you make it look good and give you the ability to make changes across your entire site in just a few seconds. There are two main things you need to do.

Step 1: Add Styles to Your Style Sheet

The first thing you need to do is find your style sheet. Your style sheet is the global control for how your site looks—text, colors, images, and more. If you’re familiar with creating styles in a word processing program like Microsoft Word, then you already understand the concept. You create and define a style, apply it to various units of text, and then when you edit that style in your style sheet, all of the text tagged with the style is instantly updated.

Find Your Style Sheet

If you use the self-hosted version of WordPress, you can find your style sheet in the admin panel by going to Appearance > Editor. Your style sheet is most likely named style.css. Click on it to load it, and then scroll to the bottom to add your new styles.1 You can access your style sheet via FTP2 by going to /public_html/wp-content/themes/{your-theme-name}/style.css. I typically use Dreamweaver to open and edit my style sheet. Other blogging platforms should be pretty similar.

Add Your New Styles

After you’ve found your file, you’ll want to add something like this at the bottom:

/* My Custom Styles */

:lang(el) { font-family: Gentium; font-size: 15px; }

:lang(he) { direction: rtl; font-family: "SBL Hebrew"; font-size: 19px; }

There are at least four different ways to mark up your Greek and Hebrew text using CSS, but W3C recommends the method I’ve chosen.

Choose Your Fonts

Gentium is a very nice free polytonic Unicode Greek font with excellent character support, but you can use a different one if you want (see my list of polytonic Unicode Greek fonts). SBL Hebrew is my favorite Unicode Hebrew font by far, but there are several other decent options (e.g., Cardo, Ezra SIL, Tahoma, Times New Roman, and TITUS Cyberbit Basic). If your readers don’t have the font you’ve chosen, their browser will default to a font that supports the Unicode characters you’ve used. In most cases, your readers should have at least one Unicode font that supports Greek and one that supports Hebrew. If you want to get specific and not leave it up to your readers’ browser to decide which font to use if they don’t have the one you’ve selected, you can use a font stack. Just add additional fonts to fall back to after your first choice. With a font stack, it would look something like this:

:lang(el) { font-family: Gentium, "SBL Greek", Cardo, "Palitino Linotype"; font-size: 15px; }

:lang(he) { direction: rtl; font-family: "SBL Hebrew", "Ezra SIL", Cardo; font-size: 19px; }

Choose Your Font Sizes

Proportionate

One thing that many people fail to do when using Greek and Hebrew fonts is to adjust their size so that they are proportionate to the English font. As much as possible, your short Greek letters (i.e., α, γ, ε, η, ι, κ, μ, ν, ο, π, ρ, σ, ς, τ, υ, φ, χ, ψ, and ω) should be about as tall as your short English letters (i.e., a, c, e, g, i, j, m, n, o, q, r, s, u, v, w, x, y, and z), and your tall Greek letters (i.e., β, δ, ζ, θ, λ, ξ, and capital letters) should be as tall as your tall English letters (i.e., b, d, f, h, k, l, t, and capital letters). The same goes with Hebrew. Your Hebrew letters (א ,ב ,ג ,ד ,ה ,ו ,ז ,ח ,ט ,י ,כ ,מ ,נ ,ס ,ע ,פ ,צ ,ק ,ר ,שׂ ,שׁ ,ת) should be as tall as your tall English letters (not as tall as your short English letters, which is far too common!). The exception is ל, which will protrude above your English letters.

Fixed vs. Variable

Instead of defining a particular pixel size for your style, you may instead want to use a percentage like 110% for Greek and 150% for Hebrew. I originally took this approach but ran into problems when making bold Greek text within a larger selection of Greek text. The bold Greek text was becoming 110% bigger than the non-bold Greek text, making it 121% larger than English text instead of 110%.3 So I opted for the fixed-pixel size instead. The only occasion where this might cause you problems is if you want to use Greek in something other than body text where you’re dealing with a larger or smaller font size (e.g., headings or perhaps blockquotes). But there’s an easy workaround for this. Just create a separate class (or separate classes) and apply them as needed.

Step 2: Apply Styles to Your Text

Now that you’ve set up your styles, you’ll need to apply them to your Greek and Hebrew text. We’ll look at how to apply them to future posts you write and how to go about updating your Greek and Hebrew in old posts.

Future Posts

Anytime you use Greek, you’ll want to wrap it in a span tag and simply define the language as Greek. So if you use θεός, you’d want to switch to the HTML or code view (rather than the Visual or WYSIWYG view) and make it look like this:

<span lang="el">θεός</span>

If you had some Hebrew text like אֱלֹהִ֑ים, it would look like this:

<span lang="he">אֱלֹהִ֑ים</span>

This can be a little tedious to apply manually, but it’s worth it to be able to control and style all of your Greek and Hebrew text globally. It’s possible that you could use a plugin like TinyMCE Advanced and add these as drop-down styles that could be applied by simply selecting your text and choosing the style from the drop-down menu, but that’s beyond the scope of this post.

One downside to styling your Greek and Hebrew text with CSS is that it won’t show up properly styled in your RSS feed. If that’s important to you, you could instead use inline styling:

<span lang="el" style="font-family: Gentium; font-size: 15px;">θεός</span>

<span lang="he" style="direction: rtl; font-family: "SBL Hebrew"; font-size: 19px;">אֱלֹהִ֑ים</span>

This isn’t recommended, though, because (1) it’s a lot more code (which means more time to write and more time to load the page) and (2) you lose the ability to modify the style of your Greek and Hebrew globally.

Past Posts

If you haven’t been tagging your Greek and Hebrew properly in the past and you care about having it accurately tagged, there are two ways to go about tagging it.

Manual

The first method is to go back through all your posts and manually edit each bit of Greek and Hebrew text. Depending on how many posts you have with Greek and Hebrew in them, this could take you several hours. It might be the right solution if you just have a handful, but otherwise you may want to consider the next method.

Find and Replace with Regular Expressions

It’s possible to use a regular expression to find all Greek or Hebrew text and automatically wrap it with the appropriate tags using find and replace. Keep in mind that this method will work best if you haven’t been marking up your Greek or Hebrew text at all.

My knowledge of regular expressions is pretty minimal, but I was able to come up with something that seems to work pretty well.

Greek

Here’s what a regex would look like for Greek:

Find: (([\u0374-\u03D5\u1F00-\u1FFE]+[ ]?)+([\u0374-\u03D5\u1F00-\u1FFE])|([\u0374-\u03D5\u1F00-\u1FFE]))

Replace: <span lang="el">$1</span>

It will find any Greek text in units separated by punctuation. If you want the regex to include the punctuation, you could instead use something this:

(([\u0374-\u03D5\u1F00-\u1FFE]+[,.;·]?[ ]?)+([\u0374-\u03D5\u1F00-\u1FFE][;·]?)|([\u0374-\u03D5\u1F00-\u1FFE]))

Depending on which program you’re using to do the regex find and replace, you may need to modify the format slightly. The format I used works in Dreamweaver (make sure to check the “Use regular expression” box). Some programs may require that the opening and close parentheses be forward slashes instead. So it would look like this:

/([\u0374-\u03D5\u1F00-\u1FFE]+[ ]?)+([\u0374-\u03D5\u1F00-\u1FFE])|([\u0374-\u03D5\u1F00-\u1FFE])/

Hebrew

Here’s what a regex would look like for Hebrew:

Find: (([\u0590-\u05FF]+[ ]?)+([\u0590-\u05FF])|([\u0590-\u05FF]))

Replace: <span lang="he">$1</span>

Tools

If you want to use these regular expressions to make global changes (i.e., without manually accepting each change), you’ll want to make sure to back up your database first. You’ll also want to acquaint yourself with emptying tables in a database and importing tables into a database using phpMyAdmin—just in case something goes wrong. Once you’ve backed up your database, you could run the query right in phpMyAdmin, but that’s something I’ve not explored. Another option is to use the Search and Replace plugin for WordPress, which supports regular expressions. Perhaps the best option is to export your database (or just the posts table), edit it locally using a text or HTML editor that supports regexes, empty your table in your live database, and then import the updated table back into your database.

  1. Some themes provide you with a secondary style sheet for adding your custom styles so you don’t lose them when you upgrade your theme. In these cases, you might be looking for a custom.css file instead. [↩]
  2. FileZilla is a good free FTP client for Windows. [↩]
  3. The same problem exists when using ems. Cf. this article on using points, pixels, ems, or percentages. [↩]

Share:

  • Tweet

Related

Filed Under: Technology Tagged With: fonts, Greek, Hebrew, phpMyAdmin, regular expressions, Unicode, website, WordPress

The New Logos

Reader Interactions

Comments

  1. AJ Gibson says

    April 19, 2010 at 9:49 am

    Excellent! Thanks very much, Phil.

    • Phil Gons says

      April 20, 2010 at 8:42 pm

      You’re welcome, AJ.

  2. Paul says

    April 20, 2010 at 1:58 pm

    Thanks very much. Do you know if the styles can be added to a wordpress.com hosted blog? See here for sample.

    • Phil Gons says

      April 20, 2010 at 8:42 pm

      You’re welcome, Paul. It looks like WordPress.com allows you to add custom styles. Just go to Appearance > Edit CSS, paste the styles at the bottom, and save it.

      • Paul says

        April 22, 2010 at 8:32 am

        Thanks, Phil. Will take a look.

        By the way, what font do you use for your base/main font? I’m playing around with mine (@ http://inchristus.wordpress.com) but am not pleased thusfar. Need something that is easily read (sans serif-ish) but has a slight flare like the one you are using. REALLY like what you have here.

        • Phil Gons says

          April 22, 2010 at 7:34 pm

          I’m using FFTisa, which is part of TypeKit (though not the free account—I have the personal account, which costs $25 per year). TypeKit is a really cool service that let’s you use real fonts on your website (even if your readers don’t have them). It’s actually built right into WordPress.com. Go to Appearance > Typekit Fonts. The biggest problem right now is that most browsers for Windows don’t render most the fonts smoothly. IE9 is the only real exception, which renders them beautifully. There are, however, a handful of fonts that do look nice, like the one I’ve chosen. They all look nice on browsers for the Mac.

          • Paul says

            April 25, 2010 at 6:51 am

            Thanks again, Phil.
            I’ve added the styles for Greek you mention above to my site (see @http://inchristus.wordpress.com/2010/02/17/insights-from-man-and-woman-one-in-christ-part-8/ for sample). I now am displaying “beautiful” Greek!.

            Good stuff here, Phil!

  3. Rubén Gómez says

    April 24, 2010 at 9:07 am

    Phil, I seem unable to access your site. Is everything okay on your end? Thanks!

  4. Phil Gons says

    April 24, 2010 at 8:59 pm

    No problems on my end. Are you still unable to access it?

  5. Rubén Gómez says

    April 25, 2010 at 12:27 am

    Yep. I'm sure it's a problem on my end. But what it is I have no idea…

  6. Classical Languages says

    May 23, 2010 at 9:15 am

    Hi! Your article is very helpful indeed. I would like to point out that there might be a problem with punctuation marks for example when you put Hebrew between LTR text in one paragraph. To fix it, add unicode-bidi: embed;

    Paul

    • Classical Languages says

      May 23, 2010 at 9:22 am

      There was such an issue on my blog. A dot at the end of a Hebrew sentence was displaying on the wrong side.

  7. Kirk Lowery says

    August 13, 2010 at 6:03 am

    Hi!

    I just went through your tutorial on doing Greek & Hebrew in WordPress. But it doesn’t work for me, and I’m not sure why. I’ve got utf-8 turned on for the blog. The fonts are installed on my Fedora 12 box and work fine in, e.g,, Thunderbird and FireFox. I used the editor to change style.css, and checked that the changes propagated to my theme’s style.css. No custom.css anywhere. What happens is that in a post, whether I use or the inline method, all I get are question marks in the post.

    It’s curious: in tinyMCE when I paste in Greek text, it looks fine. But when I save a draft, preview it or publish it, the text comes up with \???????\ in the tinyMCE edit box.

    Any suggestions for troubleshooting much appreciated!

    Kirk

  8. Kirk Lowery says

    August 13, 2010 at 6:33 am

    An update:

    I found this post: http://www.patrickgmj.net/node/66. I also checked out wp-includes/js/tinymce/themes/advanced/js/charmap.js. It appears tinyMCE doesn’t grok utf-8. So it may be changing the encoding and uses the question marks to indicate it doesn’t know what to do with it. If so, this is a serious bug with WordPress, since tinyMCE is the default editor and utf-8 is the default encoding.

    Of course, I could be wrong! ;-)

    Continuing to experiment.

  9. Kirk Lowery says

    August 13, 2010 at 7:12 am

    Problem SOLVED!

    The issue wasn’t with tinyMCE. The issue was with the mysql database. Somehow, the encoding was set to utf8mb4_swedish!? Even though the default char set for mysql is utf-8. My guess is that in the original installation of WordPress either the default was set differently (the installation is three years old), or else when I copied the initial WordPress sql, something happened. Whatever. Problem solved.

    Persistence pays. :-)

    Kirk

  10. Nazaroo says

    November 24, 2010 at 9:09 pm

    Mr.Scrivener at TC-Alternate-List (Yahoo Groups) Textual Criticism group has a similar problem:

    We have never been able to get Heb or Greek working properly on Yahoo Groups. If you use the rich text editor, you can add some html, but for some reason support of Unicode Heb/Grk is intermittent. The message will look right, and even display right while onsite at the group. Then later you’ll try to read it back and you get ????? or garbage instead of Greek or Hebrew.

    Could this be something to do with a behind-the-scenes MySql Database there storing the messages? This has been driving everyone nuts for 4 years now.

    By the way check out our website on John 8:1-11:
    http://adultera.awardspace.com

    We have Heb. and Greek up and working there.

    peace
    Nazaroo

  11. Brian Renshaw says

    March 28, 2013 at 3:04 pm

    This was great help, thanks!

  12. Glenn says

    June 14, 2013 at 9:33 pm

    Alas, there’s no joy to be had for me. I’m using the thesis 2 theme, and although I’ve edited the stylesheet in the appearance editor, my post editor simply rejects span tags. I enter them in the html (plain text) editor, but when I switch over to the rich text editor (which wordpress calls the HTML editor) and then back again, they are gone!

    • Phil Gons says

      June 15, 2013 at 7:48 am

      WordPress broke this sometime in the last year or two. It’s a pain, but you have to use the text editor exclusively to add these tags, and then you have to make sure to edit the post only in the text editor. What I do it write the whole post in the visual editor, and then add the language tags in the text editor right before I publish it. I haven’t taken the time to find a better solution yet.

  13. Josh Spurlock says

    May 8, 2014 at 8:44 am

    Cant seem to get it to work. I’ve posted the code into my style.css, but the text does not render in the correct language. Any thoughts?

  14. Phil Goble says

    June 9, 2016 at 12:12 pm

    Could you supply a tiny piece of Hebrew and Greek coding as an example including code etc שלום שלום and ειρηνη ειρηνη would do. It is amazing how some people really “get it” when they see an example. I am writing a wordpress blog and if I could have your coding example I would be in business immediately I beieve. Perhaps I am asking for the lazy way, but some of us have the kind of brain that grabs examples easily. Thank you for a very informative work that is extremely helpful as it is.

Footer

Popular Posts

  • One God in Three Persons: Unity of Essence, Distinction of Persons, Implications for Life
  • Rob Bell and Andrew Wilson Discuss Homosexuality and the Bible
  • Did John Use Bad Grammar to Teach the Holy Spirit’s Personality?
  • Free Download of R. C. Sproul’s The Truth of the Cross
  • The Doctrine of the Trinity in Five Theses
  • Warfield, Vos, and Van Til: Is God One Person?
  • John Murray on Union with Christ
  • Is Google Keep Better Than Evernote?
  • The Best Google Reader Replacement

About Me

I’m a Christ-follower and the Chief Product Officer at Logos. I’m happily married to my best friend and the father of five wonderful children. I enjoy studying the Bible and playing outside with my kids. More about me . . .

Subscribe

Receive posts via email

Join 3,932 other subscribers

Random Posts

  • “John Owen Today” Conference
  • Free Upgrade from Logos Bible Software OC to ND
  • Trinity Debate—Live
  • John Frame on Seminary
  • Fighting for a Clean Conscience
  • More Thoughts on Regret
  • Download a Free Copy of Chafer’s Book on Satan
  • Customer Appreciation Sale at CVBBS.com
  • The Doctrine of the Trinity in Five Theses

Copyright © 2025 · Infinity Pro on Genesis Framework · WordPress · Log in