Why are food labels hard to read?

During an overseas holiday, I was asked by a fellow traveller what I did for a living. Because the term “prepress operator” is esoteric, my response was to say that I make food labelling and other printing. However, I was caught quite off-guard by the traveller’s response, which was “why do you have to make labels so darn hard to read?”.

That moment has stuck with me for some time now, and in this article I’d like to answer that traveller’s question comprehensively in an Australian setting.

In short: Limited real-estate vs too much information

That’s it in a nutshell – labels tend to be small in size, usually because the product that they contain is small in volume. Despite the small size, there’s also a lot of information to include within that size.

Details that have to be displayed by law

As a disclaimer, I am not a lawyer and this is not constituting legal advice on all specifications for a label.

If retailing food, the code developed by Food Standards Australia New Zealand (FSANZ) details what should appear on food labelling. More information can be found on their site, but in short a food label should have:

  • A Nutritional Information Panel;
  • The ingredients and additives by ingoing weight, and in some circumstances the percentage of ingredients. For example, if the label is identified as strawberry jam in the branding, then the percentage of strawberries actually used in the product has to be given.
  • Allergen information
  • Directions for use or storage
  • What the food is (e.g. is it strawberry jam, cookies, kombucha, etc)
  • The contact address of the manufacturer
  • The measurement of the weight or volume of the product
  • Country of Origin label

Some information can be presented on the label but may be presented elsewhere on the container, such as:

  • Batch or run of the product being produced
  • Best before or Use-By dates

In addition, the position of where the measurement of the weight or volume of the product can appear on the label is rather rigid and structured.

Country of Origin

From 1 July 2018, food products sold in Australia must display a Country of Origin label. This label has a specific appearance that must be adhered to, along with guidelines of how the label must be phrased.

An example of the Country of Origin label

This is enforceable at law by the Australian Competition and Consumer Commission (ACCC) – the Federal Government’s consumer watchdog which can – and does – give hefty fines to corporations and individuals for breaches of the Australian Consumer Law (ACL).

There is an online generator to create such labels, so having to maintain an array of assets for this task isn’t required – simply generate a label as and when they are needed.

Details that may also be required

Barcodes

Note that in the above code, that a barcode isn’t required by law. However, if the product is to be stocked on a large scale through distributors in a logistics chain, then it will usually need a barcode. In Australia this will usually be an EAN-13 barcode but in North America a UPC barcode is more likely.

Barcodes also have limited scaling, and GS1 (a provider of barcodes and related logistic products and services) indicates that a barcode should be placed at no less than 80% of its recommended size.

Specifications from GS1 relating to EAN-13 barcodes at 100% size

In GS1’s more detailed instructions on their website, they also recommend specific locations and orientations for the barcode, so can’t just go anywhere at any size.

These recommendations sound strict, but are done with the best of intentions so that a barcode will scan first time, every time, regardless of where the product was purchased. Remember, it’s a retailer’s aim to get that product from their shelf to your pantry or refrigerator with the least amount of fuss.

The size of the barcode can also be influenced by the retail chain that is selling the product and may recommend not proportionally scaling the barcode at all but leaving it at 100% size. It is best to check with the retail chain’s specifications first.

Container Deposit Scheme

As at the time of writing, all states and territories in Australia (except for Victoria and Tasmania) have some form of container deposit scheme, usually for soft drink containers. These schemes encourage consumers to return the containers to a collection facility in exchange for a refund for each item returned.

There are no national guidelines as to how the deposit notification should appear, so check with the relevant authority in each state.

Three items commonly seen on flavoured milk cartons (from top clockwise): The Country of Origin label; The Australasian Recycling Label; and The Container Deposit Scheme.

Alcoholic drinks

While a Nutrition Information Panel is not required for alcoholic drinks, other information is required, such as:

  • Alcoholic content (ALC/VOL)
  • Standard drinks statement. This can either be a written statement i.e. CONTAINS APPROX. X.X STANDARD DRINKS or in the form of a graphic with its own requirements.
  • As of 31 July 2020 and to be phased in over three years – a pregnancy warning label.
Pregnancy warning label, phasing in began on 31 July 2020.

Additional voluntary icons or graphics for marketing purposes

Health star rating

This is a voluntary system to aid customers in making healthier choices.

Third party endorsements

Endorsements from third parties that require an audit trail to guarantee the claims made about the product or its packaging, such as:

  • Organic certification, such as NASAA or Australia Certified Organic to certify that a product is organic;
  • Forest Stewardship Council (FSC) to certify the product or its packaging is from a sustainable source;
  • Cultural preparation certifications such as Halal or Kosher.

These types of logos won’t use a generic logo, but will usually contain a unique identifier such as a number that can be tied to the particular supplier.

These logos usually have strict stylesheets that have to be adhered to such as size, color, position in relation to other elements etc, and these guidelines have to be taken into consideration when juxtaposing the artwork for the label. The third party (or its auditing agency) usually requests to see the artwork prior to approval for print to ensure that the logo is used appropriately and within its guidelines.

Australasian Recycling Label

This is a private initiative to reduce landfill by informing consumers how the packaging can be disposed of once the product is used. The logos aren’t in the public domain and permission must be sought for use of this artwork.

And of course, our own branding

With all of the other details now on the label as required, it’s time to add the branding and design to the label… if it will fit!

This is just for food!

The details listed in this article are only describing what goes on a food label in Australia and aren’t exhaustive – this article doesn’t even mention regulations that concern pharmaceuticals or industrial products that may contain harmful chemicals.

Don’t even try being creative for cigarettes

While cigarette cartons aren’t labels, it is worth mentioning this as it is currently unique to Australia. Since 1 December 2012, any tobacco product (including labels on loose tobacco such as roll your own cigarettes) in Australia must follow the plain packaging guide, which – on a regular pack of 25 cigarettes – features such marketing gems as:

  • The brand and variant must be in Lucida Sans font in PANTONE Cool Gray 2C;
  • The pack surface must be in PANTONE 448C (a greenish-brown color);
  • A warning statement and graphic that covers at least 75% of the front surface without spaces separating the statement or graphic; and 90% of the back surface.

And this is just for Australia!

This article has focused on Australian food labels as they are the ones I am most familiar with and see on a daily basis at work. However, after spending time living in Canada, I recall seeing products that were sold nationwide (with exceptions of course) having to be in both English and French – good luck with getting all that information to fit now!

Can’t the label be bigger?

That can certainly provide more real-estate for the information to be displayed, but the size is often determined by:

  • Price of label production. Larger labels usually cost more than smaller labels that have otherwise identical print specifications such as stock, inks and embellishments.
  • Size of the package itself. An A4 page simply won’t fit on a cylinder that holds 100ml of a product;
  • How the labels are applied. For example, if machine applied, there may be specifications that a larger label can’t fulfill that a smaller label can fulfill.
  • Marketing. It may be more desirable for a consumer to see more of the product in the glass jar as opposed to a label that would obscure the contents.

Your thoughts

I hope this article has explained why labels can be hard to read – put simply it is to cram all of the required information into a tiny space. I’ve tried to cover as much as I could without trying to encompass all labelling, but no doubt there are items that I’ve missed or aren’t applicable in your part of the world. Leave a comment below on anything I’ve missed or if there is anything specific to labels in your country.

Planning your Wall Planner in advance

Between September and December, most of my working days are devoted to preparing school diaries and planners. One pain-point that I encounter with some diaries is the addition of a year-to-two pages planner. The planners usually look like this:

Apart from the events for each day that are on a layer above and updated each year, the base planner itself has two major wholesale changes:

  • The initials for the days of the week; and
  • The shading for weekends.

The initials are usually 365 threaded text frames that sits above a table containing the weekend shading. The text frames contain the initials of the days of the week, corresponding to the month and day they relate to, so changing the initials is easy. However, shading the cells containing Saturdays and Sundays on the table below takes time. Even if cell styles were used, they still have to be removed from the previous year’s appearance and applied to the appropriate year’s cells – subject to operator error.

Ideally, I was after a solution that would:

  • Easily update all planner base dates in one go
  • Shade all of the weekends without having to do this manually
  • Adjust automatically for leap years
  • Reduce any mis-dating via operator error

Didn’t I already write a script for this?

In 2018, I’d prepared a script to assist in the creation of wall planners that would allow for four types of layout configuration; and in 2020 was further improved to allow an output in one of 14 languages.

That said, this article isn’t meant to be a shameless plug of this script. The script is a great solution for creating new yearly planners. However, this solution requires updating existing planners. An additional solution had to be created.

The simple solution first

As I mentioned earlier, linked text frames that contain the appropriate days of the week initials. However, rather than use one paragraph style for these initials, each day of the week was given its own paragraph style e.g. Monday, Tuesday, etc.

The paragraph styles are based upon a base style that defines its basic appearance, with flourishes added to Saturday and Sunday in the form of paragraph shading. Each paragraph starts in its own text frame, and each paragraph style also refers to a next style feature to go to the next day’s style.

The days of the week are easy enough to prepare. The first way is quick but allows for operator error, and that is to type the 7 initials and their respective line breaks; and copying them 52 times, starting January 1st on the appropriate day.

The second (and more accurate way) is to make a new Excel file, type the start date in cell A1 and then with the cell selected, go to Fill, Series, and fill out the dialog box as shown

Once done, go to cell B1 and type: =CHOOSE(WEEKDAY(A1), “S”, “M”, “T”, “W”, “T”, “F”, “S”) and press return.

In the resulting cell, double-click the green square on the bottom right corner of cell B1 to automatically fill the remaining entries in the column.

From here, select column B, copy and paste it into the threaded text frames in InDesign.

Note – if it came in as a table, make sure to briefly change InDesign’s clipboard handling preferences to handle text and tables from other applications as text only.

Last thing to do is apply the paragraph styles. Take note of what day’s initial appears on January 1 (Friday in this case) and with the text cursor still visible in the text frame, select all type (Command A). From the paragraph styles panel, right click on the Friday paragraph style and choose Apply “Friday” then Next Style.

But this solution only fills two of the four criteria:

  • Easily update a planner dates in one go
  • Shade all of the weekends without having to do this manually
  • Adjust automatically for leap years
  • Reduce any mis-dating via operator error

This solution does not take February 29 in leap years into account. In these instances, an extra text frame needs to be threaded to take in February 29, so is not completely automatic.

The over-engineered solution

I did prepare a solution outside of work hours that would meet all four criteria; but the setup of the file took more time than simply adjusting the previous planner. It would also be difficult for other operators unfamiliar with my techniques to carry out the alterations unless they were trained beforehand. Ultimately, the solution wasn’t practical for my day-to-day work and was never implemented, but it is worth looking at the solution as it uses a variety of InDesign’s features such as:

  • GREP styles
  • Table and Cell styles
  • Rule above within Paragraph styles
  • Linking to an Excel file

Both the InDesign file and Excel file can be downloaded here.

First thing is to create an XLS file that contains the yearly information that changes and link it in InDesign. Linking to an excel file can be done via InDesign’s preferences.

Linking to an XLS file can be fiddly and I’ve found the best way to maintain appearances of linked tables that are updated is to make sure that table and cell styles are applied to the table that will contain the incoming XLS data.

A glimpse at the XLS file shows that it contains the initials of the appropriate days of the week. Note that the initial letter is represented by two letters rather than one (which will be explained shortly). The year is off to the right-hand side for ease of updating the planner by just adjusting the year.

An even closer look at the XLS file shows hidden columns. If we unhide these columns, the workings behind the technique are revealed. To compensate for leap years, the calculation for February 29 has an if-else statement that says if a date appears here, add the appropriate weekday initial, but if there is nothing, leave it blank.

Back in the InDesign file, all cells contain a paragraph style that have a GREP style instruction that makes the first letter minuscule in size and width.

Why two letters for the days of the week and not one?

It is to do with how the shading of the cell is automated. The first letter is used to identify a weekend with the initial S and that letter is colorised with an appropriate color for the weekend. If the letter was a weekday, the first letter is set to none. To control the background color of the cell, the rule above feature of the paragraph style is used as it allows the [Text Color] option to be selected, and this color is the first character that the paragraph style encounters. The rule above is then made thick enough to fill the cell, and then the offsets are applied to fill the remaining parts of the cell.

Why not use the paragraph shading feature? Unfortunately, this feature does not have access to the [Text Color] option from the color dropdown.

Updating the data can present a trap, as instead of simply changing the date in excel and updating the file, the art needs to be relinked and then selected with the show import options dialog to only bring in specific cells, as the date at the far right isn’t required. In this instance, it is changing the cell range from A1:AA32 toA1:Y32 as shown:

So this will make the base for the planner, and all the further information into the particular dates is done on a layer above using a table with the same cell dimensions.

As mentioned, this is an over-engineered solution that wasn’t implemented, but its use of combining linked Excel files, GREP styles and Cell styles may have application for other purposes.

GREPgraphing – Beyond 2000

In 2016, I developed a concept of creating bar graphs using GREP styles. Put simply, when a number was typed such as 1423, several different GREP styles would kick in to transform the number into a bar graph. In the above example:

  • if there’s a one for the 1 followed by three digits, make the one character 1000% wide;
  • If there’s a 4 followed by two digits, make the four character 400% wide;
  • If there’s a 2 followed by one digit, make the two character 20% wide;
  • If there’s a 3 as the last character, make the three 3% wide.

To successfully work with any whole number between 1-1999, this technique requires creating 29 different types of GREP styles and character styles. It uses a fixed width font and takes advantage of GREP styles to adjust the width of the numbers to represent them as their appropriate value as a bar graph. I’ve written about this technique in more detail over at InDesignSecrets.

In 2018, I expanded upon this idea and made a script so that anyone wishing to use the technique without typing the 29 character and GREP styles could simply run a script:

Beyond 2000

One catch with this technique is that it stops at 1999 as the character style to represent 2000 can’t be made by creating a 2000% width as the maximum character width is 1000%. However, there is a workaround – create a new character style called 2000, based on the 1000 style, but give it a tracking of 600.

Adjust the GREP graph paragraph style and underneath the 1000% GREPstyle, make a new one using the new 2000% character style that was made and give it the following pattern:

2(?=\d\d\d\b)

To test this, I have two different GREPgraph styles containing the 1000 figure and have put them side by side. In the text frame underneath, if I type 2000 into the text frame with the GREPgraph beyond 2000 style applied to it, it should be the same width, right?

Absolutely. If I make an additional 3000% character style based on the 2000% style but changed its tracking to 1200, and added a GREPstyle to the paragraph style to apply the 3000% character style to the pattern 3(?=\d\d\d\b), this will work too.

From here, a pattern can now be seen: to get to the next 1000 in width, add another 600 to the tracking of that thousand’s character style and add a new GREP style pattern to the GREPgraph style. This will work until the tracking hits its maximum of 10,000.

Doing all this in less GREP steps

As stated earlier, the original technique required 29 GREP styles to create a GREPgraph, but what if I said it was possible to achieve the numbers 1-1999 (actually a few more – 2047) using 12 GREP styles? This can be done too, but requires a technique in Excel, and that is to convert the original base-10 number into a 16-bit binary number. I’d actually described this technique back in 2011, but it was implemented differently and with more complications: this method is far simpler.

First, convert the desired base-10 number to a 16-bit binary number in Excel using the following formula:

=DEC2BIN(A1/256,8)&DEC2BIN(MOD(A1,256),8)

Now that the number is displayed in binary, copy the binary number into InDesign.

The technique basically works the same way as the original GREPgraph technique but has a slightly different implementation. First, the character styles need to be created that will change the widths, but instead of making 1-9, 10-90, 100-900 and 1000, only the character styles 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 and 1024 need to be created. For example, the character style 32 will only contain the width of 32%, and this pattern will apply to the other numbers mentioned.

Zero and 1024 are the exceptions. Zero will have a character style featuring a .1pt size, no fill or stroke, and 1% width. 1024 will have a character style of 1000% and a tracking of 14.

This will create a total of 12 character styles.

Now to make the paragraph style. To keep it simple, the appearance of the bar graph will controlled by the paragraph rule (though more advanced methods can be made using combinations of rule above, below, underlines and strikethroughs).

Here is where the magic happens – the GREP styles. Here are the styles and how they are implemented in the GREP style panel of the Paragraph style.

And here is the result:

So what’s happening here?

It’s important to understand how binary numbers are written compared to base-10 numbers. The following site gives a really good explanation, and that’s all that’s happening here – the GREP styles are being applied to the 1s in the binary number, based on their position in the binary number, and applying the appropriate GREP widths.

It can go larger

Just like the regular GREP graph, this too can be expanded to numbers larger than 2000 by creating an additional character style that has an added tracking applied. In this case, to represent the numbers 1-4095, a further character style can be added: 2048.

An advantage of this technique is that instead of creating an additional 9 character/GREP styles for each power of 10 using the base-10 GREP styles, the binary method will require a new style every time the total doubles e.g. 14th GREP style would be 4096, 15th GREP style would be 8192…

The obvious disadvantage with this technique: the numbers to be displayed as bar graphs have to be written out in binary first.

Is this something I would use? Probably not myself, as GREPgraphs are normally enough for my purposes, but I often hear the question “what if you need more than 1999 in a graph” so I felt that it was worth answering the question: It can be done, but it’s a lot of effort to get there.

Please fix Text Variables so they behave like regular text

Within the type menu of Adobe InDesign is the Text Variables feature. This allows users to insert a special character that will display one of the following items:

  • A chapter number
  • A file-related date such as the creation date, modification date or output date
  • Filename
  • Image Name (aka captions setup)
  • Last Page Number
  • Running Header based on either a used paragraph or character style
  • Custom static text

Unfortunately, there is an unwanted behaviour of the text variables – InDesign treats them as a single character rather than the actual content within the variable. This has a few unwanted consequences:

  • Long variables that would normally break over several lines are squished into one line;
  • They cannot be formatted using GREP or Nested styles, nor can specific words be manually selected for formatting.

It’s an issue that is “in backlog” by the Adobe InDesign team to address, but that was first stated in 2017.

If the issue was resolved, it would have enabled my GREPGraph solution to be applied in the following InDesignSecrets article.

As it turns out, it is also affecting another solution that would make lives easier for anyone who has to create diaries and planners on a regular basis.

The brief:

A planner is created by making a base template and then creating threaded text for the dates that are represented only by numbers. This makes populating a diary from week to week relatively easy…

…until the other material has to be populated, such as what month it is, what term it is, and what week it is. This is best illustrated in the first two minutes of a Youtube video by Rob Cubbon.

Incidentally in Rob’s video, he uses frame breaks between each record, but that isn’t required. Instead, adjust the paragraph style of the numbers by going to the Keep Options and from the Start Paragraph dropdown, select In Next Frame.

The technique:

Instead of populating the text frames simply with numbers, what if the frames were populated with more information that can be called upon by running header text variables, such as the month?

I can make a list in excel that contains the day of the week and the month in one column. This is also done without a space intentionally for reasons that will become evident soon.

I can then copy this text to my InDesign file. However, note that the text overflows and isn’t correct – that is because the flowing numbers need to have a character style that will hide the text that we want to be visible elsewhere. To do this, I’ve created a character style called hidden, and its properties are:

  • .1 point high;
  • 1% wide;
  • No fill or stroke.

That’s fine, but applying that manually to everything but the numbers will be a nuisance, so the paragraph style for the numbers has to be modified using Nested Styles.

The nested style will apply a style of [None] to the digits as they need to be visible, but will intentionally hide the month.

So why I am I intentionally hiding the month? Because I’m only interested in the information it represents, and this can be called upon by a text variable. I will go to the master page and insert a text variable for a running header showing me the first result of hidden on the page.

The issue with the technique

That’s fine until I get to a spread that contains two months. I’d rather both months be present rather than the earlier month. For example, I’d like the headline to read April/May instead of April. I can do this by returning to my master page, apply my blinking text cursor to the text variable that is already there, type a slash and then create a new text variable that is a running header looking for hidden character style in the last instance.

Once I’ve inserted the variable and returned to that spread, that now looks fine, but all others are now affected.

I should be able to make a GREP style that will look for a word, then a backslash, and the same word it initially found. I’ll create a new text frame with some sample text to see if it works. The GREP code I’ll use is this:

Apply style: Hidden

GREP: (.+?)\K\/\1

Looks like its working in my demo, but as I check the document it isn’t… I’ll find a spread where I know the months split.

But that should work. I saw it work on plain text, why isn’t it working on text variables? That’s because GREP styles and Nested Styles don’t work on text variables. If I want this technique to work, I’ll have to use a workaround.

The workarounds:

  • Use a script to convert the text variables to plain text. Marijan Tompa used to have such a product via the Adobe Exchange, but it has since been removed, and it is not mine to give away. Other scripts do exist on the Adobe InDesign forums, but they are not as flexible as Marijan’s original script. It also works only one way, and can’t convert the text back to variables.
  • Don’t attempt to use the GREP style to hide the duplicate month, but instead only add a Running Header for the first instance on a page and add the others manually by overriding the affected master pages;
  • Create the desired date in Excel using a formula.

The issue with the first two solutions is that it prevents the solution from remaining live. The last solution will work but requires in-depth knowledge of Excel and – for many diaries – requires having an Excel file on stand-by for this purpose.

Ultimately, I’d love to see a fix for this issue as it would open up many possibilities. If you feel that this needs attention now rather than later, please cast your vote here.

%d bloggers like this: