What is the formula to calculate the font-size for tags in a tagcloud?
Try:
<div data-i2="fontSize:[10,30]">
<span data-i2="rate:1">A</span>
<span data-i2="rate:4">B</span>
<span data-i2="rate:7">C</span>
<span data-i2="rate:12">G</span>
<span data-i2="rate:5">H</span>
</div>
Then
i2.emph();
http://jsfiddle.net/EUaC5/1/
You could use a linear or logarithmic assessment of the number of items associated with a certain tag relative to the largest tag, multiply it by the difference between minimum and maximum font sizes, then add it to the minimum font size. For example, the math in pseudocode might be:
let min = 12, max = 24
for each tag
font = (items / items in biggest tag) * (max - min) + min
here you can check how it's done in WordPress:
https://github.com/WordPress/WordPress/blob/26bda18a23174afb048afbe62296c76a62add542/wp-includes/category-template.php#L955
fontStep = (maxSize - minSize) / (maxCount - minCount);
fontSize = smallestFont + ( tagCount - minCount ) * fontStep;
To make @Delan's answer more clear I created some examples in languages I am familiar with.
Example in Javascript
var tags =
[
{ Name: "c#", Uses: 100 },
{ Name: ".net", Uses: 75 },
{ Name: "typescript", Uses: 50 },
{ Name: "lua", Uses: 50 },
{ Name: "javascript", Uses: 25 },
{ Name: "jquery", Uses: 1 },
{ Name: "c++", Uses: 0 },
];
var max = 100; // Should be computed
var min = 0; // Should be computed
var fontMin = 10;
var fontMax = 20;
for (var i in tags)
{
var tag = tags[i];
var size = tag.Uses == min ? fontMin
: (tag.Uses / max) * (fontMax - fontMin) + fontMin;
}
Example in C#
var tags = new List<Tag>
{
new Tag { Name = "c#", Uses = 100 },
new Tag { Name = ".net", Uses = 75 },
new Tag { Name = "typescript", Uses = 50 },
new Tag { Name = "lua", Uses = 50 },
new Tag { Name = "javascript", Uses = 25 },
new Tag { Name = "jquery", Uses = 5 },
new Tag { Name = "c++", Uses = 5 },
};
int max = tags.Max(o => o.Uses);
int min = tags.Min(o => o.Uses);
double fontMax = 20;
double fontMin = 10;
foreach (var tag in tags)
{
double size = tag.Uses == min ? fontMin
: (tag.Uses / (double)max) * (fontMax - fontMin) + fontMin;
}